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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 穷傻呆丑萌 中级黑马   /  2013-9-7 13:55  /  1172 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

异常机制是在程序出现错误时,程序该如何处理,它提供了程序退出的安全通道。不要应用异常处理机制来对付突然出现在程序中的所有错误。因为异常发生时,它会确认是什么异常类型,这通常要花费一定的时间,尽可能以编程的方式判断可能发生的错误或事件。
异常处理格式:

Try
{
//程序代码块;
//尽力执行该代码块,并捕捉可能发生的异常
}
catchException e
{
//异常处理代码块;若异常不被处理,程序将会中止。
//一个try,可对应多个catch,异常处理机制会搜寻参数与异常类型相符的,进入那个catch从句。必须正确排列捕获异常的catch子句,范围小的Exception放在前面的catch。即如果Exception之间存在继承关系,就应把子类的Exception放在前面的catch子句中。
//若当前处理不了该异常,那么把它再抛出。也可在此再抛出异常,实现对错误的封装;
//没有表达式的throw(throw;),将会再次抛出被catch捕捉到的异常。
//使用不带参数的catch子句,则可以捕获任意类型的异常
}
finally
{
//存在于异常处理的标准事件流之外。
//用来清理资源或还原相关设置信息等其他操作
//是否发生异常,均要执行的代码块;
}

throw用于引发异常,可引发预定义异常和自定义异常。
如果方法遇到一个不知道如何处理的意外情况(abnormal condition),那么它应该抛出异常。throw语句无条件地把控制转移到别处,若有try{}catch{},它将转移到能处理这个异常的第一条catch子句。

在做异常处理的时候,最好能在应用程序所有的入口处(事件处理函数,主函数,线程入口)使用try-catch但是不要在程序构造函数入口处添加try-catch,因为此处产生异常,它自己并没有能力来处理,因为它还没有构造完毕,只能再向外层抛出异常。要避免使用了try-catch但没有处理异常的情况,否则就相当于给异常放行。

1 个回复

正序浏览
补充一下

try {}里有一个return语句,那么紧跟在这个try后的finally {}里的代码会不会被执行,什么时候被执行?
会执行,在return后执行。
  1.   static void Main(string[] args)
  2.         {
  3.             Console.WriteLine(GetIt());
  4.             Console.ReadKey();
  5.         }

  6.         static int GetIt()
  7.         {
  8.             int i = 8;
  9.             try
  10.             {
  11.                 i++;
  12.                 Console.WriteLine("a");
  13.                 return i;//把返回值设定为i,然后“尽快”返回(没啥事就回去吧)
  14.             }
  15.             finally
  16.             {
  17.                 Console.WriteLine("b");
  18.                 i++;
  19.             }
  20.         }
复制代码
以上代码执行结果是ab9;
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马