本帖最后由 tasolla 于 2011-07-19 03:34:54 编辑

解决方案 »

  1.   

    1、设好最后的防线:只在应用程序边界Catch,比如UI的事件,一旦Catch,不再throw;
    2、如果i==null经常发生,并且是一种“正常情况”,那么楼主第一种做法是较为合理的,
       这种情况下引发异常就会造成性能问题;
    3、全线进攻:用断言拦截所有你能遇见的"不正常"情况,避免系统引发标准异常,
       楼主的代码应该改写成进攻性的,
       也就是说,如果i==null这种情况是“不正常的”,并且你能预见到这种不正常情况,
       那你最起码应该报告“自定义异常”或者一个特定的异常(因为是你能预见的),
       而不应该由系统引发一个标准异常.
      

  2.   

    举例:
    if (i == null)
    {
        //在这之前你首先应该写一个自定义异常类,并且拥有这样的构造器MyException(string pErrMsg)
        throw new MyException("出现null异常,变量i不能为null");
        //当然也可以:throw new ArgumentNullException("变量i不能为null");
    }
    else
    {
        if (i == 0)
        {
            //正常执行的代码
         }
        else
        {
            //跳出
         }
    }
      

  3.   

    请参考MSDN相关链接:
    异常引发:http://msdn.microsoft.com/zh-cn/library/ms229030(v=VS.80).aspx

    异常和性能:http://msdn.microsoft.com/zh-cn/library/ms229009(v=VS.80).aspx
    处理异常的最佳做法::http://msdn.microsoft.com/zh-cn/library/seyhszts.aspx
      

  4.   


    我简单地回答你:该用就用在实际项目中,try...catch...finally是再常见不过的东西了。