C#异常处理的几个原则

转载来自:http://www.oecp.cn/hi/LiuBP/blog/2312

在开发应用程序的时候,异常处理是非常的重要的,我找到一些异常处理准则,将它共享出来,如有不同意见,欢迎提出来一起探讨。

1、决不“catch”一个Exception,却什么也不处理。如果您隐藏了异常,你永远不会知道是否发生过异常。

2、如果产生Exception,给用户提供一个友好的信息,但记录与有关错误的所有可能的细节,包括它的发生时间,方法和类的名字等实际的错误信息。

3、始终捕获特定的异常,而不是一般的异常和系统异常。

4、你可以有一个应用程序级(线程级)的错误处理程序,您可以用它处理所有一般异常。在一个'意外一般错误''中,这个错误处理程序应该捕获该异常并记录他,除此之外,在应用程序关闭之前应该做出友好的信息提示或者允许用户选择忽略异常继续。

5、不要在所有的方法中写的try - catch。只在有可能有某个特定的异常发生的方法中使用它。例如,如果你是一个文件读写操作,只需处理FileIOException。

6、不写非常大的try - catch块。如果需要,为您执行每个任务编写单独的try - catch程序,在try - catch中只有一段特定的代码。这将帮助你找到哪一段代码产生的异常,你可以给特定的错误信息给用户。

7、如果在你的应用需要,你可以写自己的自定义异常类。自定义异常不要继承SystemException基类。相反,继承ApplicationException。

8、当发生异常时,为了确保清理占据的资源,使用try / finally块。在finally子句中关闭的资源。使用try / finally块,即使发生异常,也能确保资源disposed。

9、错误消息应能帮助用户解决问题。不要给出例如"应用程序发生异常", "有一个错误"等信息,相反要给出具体的信息“无法更新数据库。请确保登录ID和密码是正确的。”

10、当显示错误信息时,除了告诉什么是错误,该消息还应该告诉用户,不是“无法更新数据库。”,而是建议用户应怎样做:“无法更新数据库。请确保登录ID和密码是正确的。”

11、显示简短和友好的信息给用户。但要尽一切可能的记录实际的错误日志信息。这将有助于诊断问题。

12、在Global.asax中定义一个全局错误处理程序来捕获任何未在代码中处理异常。你应该在事件日志中记录所有的异常追踪和随后进行分析。

上一篇:C#学习之在辅助线程中修改UI控件----invoke方法


下一篇:Design Pattern ——Factory Method&Abstract Factory