黄聪:.NET开发中的Exception处理三定律

关于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

你可能感兴趣的:(exception)