记得很久以前在书上看过,不过这种细节大概也没多少人会注意
一般来说,自定义异常类已经用的不多
至於该怎麽自定义好呢?我想讨论的更少。
不过如连结所指向的文章 MSDN 自定义异常类(中文) 写的不错值得参考
原文是出自於 Addison-Wesley 公司的书「Framework Design Guidelines: Conventions, Idioms, and Patterns for Reusable .NET Libraries」
现在被节录到 msdn 上了,不妨参考一下。
节录重点如下:(范例还请参考上面的连结)
- 避免使用深的异常层次结构。
- 一定要从 System.Exception 或其他常见基本异常之一派生异常。
- (请注意,捕捉和引发标准异常类型 具有一个指南,指出不应从 ApplicationException 派生自定义异常。)
- 异常类名称一定要以后缀 Exception 结尾。
- 应使异常可序列化。 异常必须可序列化才能跨越应用程序域和远程处理边界正确工作。
- 一定要在所有异常上都提供(至少是这样)下列常见构造函数。
- 一定要只在要求适合的权限后,才通过 System.Object.ToString 的重写报告安全敏感信息。如果权限要求失败,则返回一个不包括安全敏感信息的字符串。
- 一定要以私有异常状态存储有用的安全敏感信息。 请确保只有受信任的代码才能获取该信息。
- 考虑提供异常属性,以便可以以编程方式访问除消息字符串之外与异常相关的额外信息。
参考:http://msdn.microsoft.com/zh-cn/library/ms229064(v=vs.100).aspx
我们自已在公司内部,做了个 code snippet (yf_custom_exception)
可以快速产生依照建议的自定义类,觉得很不错。