第六篇:异常

  首先我们先讲一下try/catch/finally各自的职责和最佳用法
  try块包含的代码组成了程序的的正常操作部分。
  catch块包含的代码处理各种错误。
  finally块包含的代码清理资源或执行要在try或catch块末尾执行的其它操作。无论是否产生异常都会执行finally块。
  private bool test()
  {
       try
       {
           return true; //1
       }
       catch (Exception)
       {
           return false;//2
       }
       finally
       {
           //return true; //error
           int i = 1;//3
       }
       return true;//4
   }
在上面这段代码中,如果finally中出现了return则编译器会报错。我们再看一下它的执行顺序,如果程序没有异常的话,就先执行3然后执行1返回true;如果程序有异常的话,就先执行3再执行2返回 false。也就是说4永远不会被执行。
   捕获异常时,catch块中应当尽量指定具体的异常筛选器,多个catch块应保证异常由特殊到一般的排列顺序:
private void main()
{
   try
   {
   }
   catch(IndexOutOfRangeException ex)
   {
   }
   catch(Exception ex)
   {
   }
}
这个顺序很终于,如果以相反的顺序编写这两个块代码就不会编译,因为第二个块是不会执行的。

在此我们提出一个性能建议:要尽可能少的抛出异常,禁止将异常处理放在循环中,异常处理是非常耗时的,如果循环中有过多的异常处理很有可能导致服务器死机。
 今日c#性能优化明星:异常处理放在循环外面
  优化指数:95

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值