异常就是可以预见无法防范的问题,但是可以处理。
我们常用的异常处理方法是用
try
{
可能出现异常的语句
}
catch
{
捕捉错误并处理
}
finally
{
最后的清理操作
}
但是当我们的程序在没有这些语句的时候吗,它是怎么处理这些异常的?
这个时候.net framework会捕捉这些异常。但是此时程序会被中断,编译器会显示给用户一个异常的提示信息,但这并不是我们想要的结果,因为它使得整个程序无法继续运行下去了。所以在容易出现异常的地方用try catch语句来捕获这些异常是必要的。
看看下面的这个代码- try
- {
- int i = 42, j = 0;
- int a = i / j;
- int[] b = { 1 };
- b[41] = 8;
- }
- catch (IndexOutOfRangeException e)
- {
- Console.WriteLine("数组异常");
- Console.WriteLine("错误信息", e);
- }
- catch (ArithmeticException e)
- {
- Console.WriteLine("除数为0");
- Console.WriteLine("异常信息:", e);
- }
- catch (Exception e)
- {
- Console.WriteLine(e);
- }
- finally
- {
- Console.ReadKey();
- }
- 运行这段代码会发信,编译器只提示第二个错误异常,并不执行第一个和第三个。这里可以发现设置多个catch语句并不是捕获所有的异常信息,而是为了更加精确的捕获异常。在程序当中,一旦出现异常就不会执行下面的语句。而是直接跳转到相应的catch语句。所以后面的异常就不会出现。所以这个程序在int a=i/j这里就直接跳转到第二个catch语句中了。并没有执行后面的语句。
复制代码 |