关于c#:创建自己的自定义异常的最佳做法是什么?

关于c#:创建自己的自定义异常的最佳做法是什么?

What are some best practices for creating my own custom exception?

在先前有关异常的问题的后续活动中,在.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();
  • 哪里

    1
    2
    3
    4
    class FooException : Exception
    {
        public FooException(string message) ...
    }

    1
    2
    3
    4
    5
    6
    7
    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,这就是您应该继承的基本异常,除非您当然可以使用诸如更具体的异常的默认消息之类的东西。


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


    推荐阅读

      linux下创建网络命令?

      linux下创建网络命令?,网络,地址,工作,系统,管理,命令,名字,最新,项目,设备,l

      linux命令创建项目组?

      linux命令创建项目组?,管理,密码,项目,命令,系统,位置,文件,用户组,用户,文

      linux的创建目录命令?

      linux的创建目录命令?,名字,地址,位置,密码,软件,系统,命令,目录,文件夹,文

      linux创建端口命令?

      linux创建端口命令?,系统,网络,服务,通讯,检测,工具,端口,电脑,命令,以下,Lin

      linux创建内容的命令?

      linux创建内容的命令?,名字,文件,命令,密码,时间,系统,文件名,终端,目录,文

      linux下文件创建命令?

      linux下文件创建命令?,名字,名称,首次,命令,文件,系统,密码,文件名,文件夹,

      linux创建vp命令?

      linux创建vp命令?,系统,工作,基础,设备,地址,命令,目录,环境,信息,工具,linux

      linux命令创建文件加?

      linux命令创建文件加?,名字,管理,系统,名称,密码,首次,命令,文件,文件夹,位

      linux按命令创建磁盘?

      linux按命令创建磁盘?,系统,信息,业务,号码,数据,情况,电脑,分区,较大,工具,

      linux命令中创建文本?

      linux命令中创建文本?,系统,时间,文件,终端,名字,名称,发行,命令,文件夹,文

      linux常用命令创建?

      linux常用命令创建?,地址,系统,工作,时间,命令,管理,文件,目录,路径,控制台,l

      文件创建linux命令?

      文件创建linux命令?,名字,时间,名称,系统,首次,文件,命令,密码,文件名,目录,L

      linux创建软链接命令?

      linux创建软链接命令?,工作,地址,位置,系统,信息,管理,服务,名字,链接,文件,

      linux创建数组命令?

      linux创建数组命令?,地址,工作,系统,信息,命令,代码,目录,情况,标准,文件,Lin

      linux创建dic命令?

      linux创建dic命令?,软件,系统,电脑,下来,中心,词典,分级,基础,权威,网络,如何

      创建空文件linux命令?

      创建空文件linux命令?,名字,系统,密码,命令,文件,标准,首次,名称,时间,单位,l

      linux创建用户命令是?

      linux创建用户命令是?,系统,密码,用户,软件,联系方式,用户名,电脑,命令,账

      linux自己创建命令?

      linux自己创建命令?,名字,名称,密码,系统,首次,文件夹,命令,文件,位置,目录,l

      linux如何创建命令?

      linux如何创建命令?,工作,系统,名字,命令,首次,名称,地址,基础,密码,信息,lin

      linux创建软链命令?

      linux创建软链命令?,位置,系统,信息,链接,文件,盘中,名字,命令,目录,结点,Lin