A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄冉 中级黑马   /  2012-11-20 08:56  /  1450 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

异常就是可以预见无法防范的问题,但是可以处理。
我们常用的异常处理方法是用
try
{
可能出现异常的语句
}
catch
{
捕捉错误并处理
}
finally

最后的清理操作

但是当我们的程序在没有这些语句的时候吗,它是怎么处理这些异常的?
这个时候.net framework会捕捉这些异常。但是此时程序会被中断,编译器会显示给用户一个异常的提示信息,但这并不是我们想要的结果,因为它使得整个程序无法继续运行下去了。所以在容易出现异常的地方用try catch语句来捕获这些异常是必要的。
看看下面的这个代码
  1. try
  2.             {
  3.                 int i = 42, j = 0;
  4.                 int a = i / j;
  5.                 int[] b = { 1 };
  6.                 b[41] = 8;

  7.             }
  8.             catch (IndexOutOfRangeException e)
  9.             {
  10.                 Console.WriteLine("数组异常");
  11.                 Console.WriteLine("错误信息", e);
  12.             }
  13.             catch (ArithmeticException e)
  14.             {
  15.                 Console.WriteLine("除数为0");
  16.                 Console.WriteLine("异常信息:", e);
  17.             }
  18.             catch (Exception e)
  19.             {
  20.                 Console.WriteLine(e);
  21.             }
  22.             finally
  23.             {
  24.                 Console.ReadKey();
  25.             }
  26. 运行这段代码会发信,编译器只提示第二个错误异常,并不执行第一个和第三个。这里可以发现设置多个catch语句并不是捕获所有的异常信息,而是为了更加精确的捕获异常。在程序当中,一旦出现异常就不会执行下面的语句。而是直接跳转到相应的catch语句。所以后面的异常就不会出现。所以这个程序在int a=i/j这里就直接跳转到第二个catch语句中了。并没有执行后面的语句。
复制代码

评分

参与人数 1技术分 +1 收起 理由
张文 + 1

查看全部评分

1 个回复

倒序浏览
不错,值得学习
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马