homestyle

 

使用try Catch小结

什么时候用try Catch

在你觉得容易出错的地方,一般大家会给整个大的程序try Catch一下,比如某个大的工作线程

事实上对性能影响不大,因为try Catch是为了防止不可预见的异常,不至于程序崩溃,所以不是经常中断,然后组织throw exception这样的大动作。

任何异常都用Try Catch

很多异常是可预见的,比如参数错误,比如事件有无订阅等等,最好用条件判断消除掉,因为try Catch不是把性能浪费在这个上面的。

Try Catch 语句 的层次

我习惯在调用 的第一层用try Catch,第二层其实没多大必要用,因为发生了异常,几乎程序运行的结果就不正确了,那么让异常返回到第一层,好看看是什么导致了异常,调试的时候方便。

Try Catch 返回的信息

最好返回比较详细的信息,这样对调试有利,现在一般用ex.TargetSite+ex.Message

Try Finally 用于释放资源

当有数据库连接,socket通信这些资源调用时,用try Finally 释放资源

 

 

测试结果:

try finally 异常会一直抛出,直到遇到一个Catch,如果一直没有,程序就会崩溃,且,try finally 语句块外的上一层语句在遇到一个Catch之前都会被跳过。

 

在下一层的Catch语句里面用throw exception可以将异常抛出到上一层,但上一层 语句块外的语句仍然会被跳过。

 

如果不用throw exception,那么异常将不再向上一层抛出,上一层语句块之外的语句可以被执行,上一层不会再抓异常。

 

return和 throw exception不兼容

exception 是中断当前程序,不断返回,抛出,直至遇到一个Catch才停下来,

return 是中断当前函数,返回原调用点。

 

如果前面一句是return,后面的exception就不会执行

如果前面一句是throw exception,后面的return 也不会执行

 

事实的需求也是不需要这两个兄弟兼容的,如果希望return一个值,那么在没有异常的情况下,可以return正确的值,如果发生了异常,直接throw exception ,在上一级看到异常,而发生异常是不成功的执行,返回一个值也没必要,有了exception嘛!

posted on 2012-04-18 20:11  homestyle  阅读(1056)  评论(0编辑  收藏  举报

导航