在上一个关于异常的问题的后续行动中,在 .NET 中创建自定义异常的最佳实践是什么?
更具体地说,您应该继承 System.Exception、System.ApplicationException 还是其他一些基本异常?
在上一个关于异常的问题的后续行动中,在 .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")
{
}
}
我更喜欢第三个选项,因为我认为它是一个面向对象的解决方案。
继承自System.Exception
。System.ApplicationException
是没用的,设计指南说“不要抛出或派生自System.ApplicationException
.”
请参阅http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx
有一个代码片段。用那个。另外,事后检查你的代码分析;该片段遗漏了您应该实现的构造函数之一。
我认为在处理任何级别的异常(自定义、抛出、捕获)时要记住的最重要的一点是,异常仅适用于异常情况。
所有其他异常都继承自的基本异常是 System.Exception,这就是您应该继承的,除非您当然可以使用诸如更具体异常的默认消息之类的东西。