在前一个关于异常的问题的后续内容中,在.NET中创建自定义异常的最佳实践是什么?
更具体地说,您应该继承System.Exception,System.ApplicationException还是其他一些基本异常?
在C#IDE中,键入"exception"并单击TAB.这将扩展为您开始编写新的异常类型.有评论链接到一些异常实践的讨论.
就个人而言,我是创建大量小类的忠实粉丝,其范围扩展到异常类型.例如,在编写Foo类时,我可以选择:
throw new Exception("Bar happened in Foo");
throw new FooException("Bar happened");
throw new FooBarException();
哪里
class FooException : Exception { public FooException(string message) ... }
和
class FooBarException : FooException { public FooBarException() : base ("Bar happened") { } }
我更喜欢第三种选择,因为我认为它是一种OO解决方案.
继承自System.Exception
.System.ApplicationException
是没用的,设计指南说" 不要抛出或衍生出来" System.ApplicationException
.
见http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
有一个代码片段.用那个.另外,之后检查您的代码分析; 片段遗漏了您应该实现的构造函数之一.