关于Exception处理没想到争论还不少,把我这些年来一直遵循的原则总结一下(大多数时候适用于WinForm的开发)
定律1 执行IO,数据库等外部操作的时候,必须以Try-Catch(-Finally)包装该操作,捕获可以预见的IOException,DBException等指定类型的Exception,并正确执行文件流的关闭,DB事务的回滚,DB连接的关闭等后续处理。除此之外的Exception一律无视(自动适用于定律2的处理范围)。
定律2 除了定律1所提到的场景,在且只在且必须在UI层(多指画面控件的事件处理函数)以Try-Catch(-Finally)捕获Exception。捕获之后只做两件事:根据Exception类型给最终用户显示友好的提示信息,不必显示Exception的具体信息;Exception详细信息,特别是StackTrace,记录在Log中,以方便将来排错。
定律3 除了定律1和定律2所提到的场景,代码的任何地方都不应该出现 Try,Catch, Throw等字眼;大多数情况下不需要使用自定义异常。
------------------------------------------------------
最高定律
定律0 如果觉得自己确实很NB,可以无视定律1,2,3,随心所欲。
------------------------------------------------------
文章地址:http://www.cnblogs.com/csliwei/archive/2010/12/14/3Rules-Exception.html