创建我自己的自定义异常的最佳做法是什么?

时间:2020-03-05 18:50:56  来源:igfitidea点击:

在上一个有关异常的问题的后续活动中,在.NET中创建自定义异常的最佳实践是什么?

更具体地说,我们应该继承System.Exception,System.ApplicationException还是其他一些基本异常?

解决方案

回答

我认为在任何级别(进行自定义,抛出,捕获)处理异常时,要记住的最重要的一件事情是,异常仅适用于特殊情况。

回答

System.Exception继承。 System.ApplicationException是没有用的,并且设计准则说:"不要从System.ApplicationException抛出或者派生。"

参见http://blogs.msdn.com/kcwalina/archive/2006/06/23/644822.aspx

回答

继承所有其他异常的基础异常是System.Exception,这就是应该继承的异常,除非我们当然可以使用诸如特定异常的默认消息之类的东西。

回答

有一个代码段。用那个。另外,事后请检查代码分析;该代码段省略了我们应实现的构造函数之一。

回答

在CIDE中,键入" exception",然后单击TAB。这将使我们开始编写新的异常类型。有注释以及一些有关异常做法的讨论的链接。

就我个人而言,我非常喜欢创建许多小类,在那儿扩展到异常类型。例如,在编写Foo类时,我可以选择:

  • 抛出新的Exception(" Bar发生在Foo中");`
  • 抛出新的FooException(" Bar发生");`
  • 抛出新的FooBarException();

在哪里

class FooException : Exception 
{
    public FooException(string message) ... 
}

class FooBarException : FooException 
{
    public FooBarException() 
        : base ("Bar happened") 
    {
    }
}

我更喜欢第三个选项,因为我认为它是一个面向对象的解决方案。