因为一个微博上的讨论,让我对.NET的try...catch有了进一步的理解。
微博地址:http://t.qq.com/p/t/51787041429308
另外有一个园友的文章:C# throw使用小区别
部分内容摘抄:
我的意思是,直接throw跟不catch没区别,那catch做甚?throw e有区别,区别就是为了安全起见,不能上面的人知道,下面发生了什么,以免被攻击。
嗯。本身这个代码不catch比较合理。但是对于throw和throw e,我还是觉得应该throw,自己处理不了的异常,一定不能隐藏原始信息,不然会误导类库调用者。防止细节泄露的,应该只在最上层才需考虑(如UI)
应该是这样的,除了需要做特殊处理外,底层一般不做catch
catch的时候,除非特别情况,不然都不推荐catch(Exception ex), 应该指定好catch的异常类型,比如catch(FileNotFoundExcetption e),只捕获自己能处理的异常。