创建自己的自定义异常有哪些最佳做法?

时间:2008-09-10 17:55:01

标签: c# .net exception

在关于异常的previous question的后续内容中,在.NET中创建自定义异常的最佳做法是什么?

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

5 个答案:

答案 0 :(得分:26)

在C#IDE中,输入'exception'并点击TAB。这将扩展为您开始编写新的异常类型。有评论链接到一些关于例外做法的讨论。

就个人而言,我是创建大量小类的忠实粉丝,因为它扩展到了异常类型。例如,在编写Foo类时,我可以选择:

  1. throw new Exception("Bar happened in Foo");
  2. throw new FooException("Bar happened");
  3. throw new FooBarException();
  4. ,其中

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

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

    我更喜欢第三种选择,因为我认为它是一种OO解决方案。

答案 1 :(得分:16)

继承自System.ExceptionSystem.ApplicationException没用,设计指南说“投掷或派生自System.ApplicationException。”

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

答案 2 :(得分:5)

有一段代码片段。用那个。另外,之后检查您的代码分析;片段遗漏了您应该实现的构造函数之一。

答案 3 :(得分:1)

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

答案 4 :(得分:1)

所有其他异常继承自的基本异常是System.Exception,这是你应该继承的,除非你当然可以使用更具体的异常的默认消息。