在关于异常的previous question的后续内容中,在.NET中创建自定义异常的最佳做法是什么?
更具体地说,您应该继承System.Exception,System.ApplicationException还是其他一些基本异常?
答案 0 :(得分:26)
在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解决方案。
答案 1 :(得分:16)
继承自System.Exception
。 System.ApplicationException
没用,设计指南说“不投掷或派生自System.ApplicationException
。”
请参阅http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
答案 2 :(得分:5)
有一段代码片段。用那个。另外,之后检查您的代码分析;片段遗漏了您应该实现的构造函数之一。
答案 3 :(得分:1)
我认为在处理任何级别的异常(进行自定义,抛出,捕获)时要记住的最重要的事情是异常仅适用于特殊情况。
答案 4 :(得分:1)
所有其他异常继承自的基本异常是System.Exception,这是你应该继承的,除非你当然可以使用更具体的异常的默认消息。