【问题标题】:Which class should be used as base class of custom exception in .NET? [duplicate]哪个类应该用作 .NET 中自定义异常的基类? [复制]
【发布时间】:2010-07-20 07:41:49
【问题描述】:

可能重复:
Should I derive custom exceptions from Exception or ApplicationException in .NET?

我在 MSDN 中发现了两个有争议的想法。

如果您正在设计需要创建自己的异常的应用程序,请从 ApplicationException 类派生。

Source

对于大多数应用程序,从 Exception 类派生自定义异常。

Source

另外,当我对 70-536 进行一些练习测试时,有类似的问题,并且正确答案被标记为 ApplicationException。

什么是官方指南?

【问题讨论】:

标签: .net exception


【解决方案1】:

ApplicationException 是第一个建议,但一段时间后,MS 认为它只是增加了继承深度而没有任何优势,因此他们将建议更改为仅使用 Exception

您可以在这篇博文中找到更多信息(包括解释理由的引文):http://blogs.msdn.com/b/kcwalina/archive/2006/06/23/644822.aspx

【讨论】:

    【解决方案2】:

    好问题。简短的回答是,出于多种原因,ApplicationException 类已被非正式弃用/过时。 (主要的原因可能是异常类型应该/不需要指明来源(这就是Source 属性的用途。)

    最初(我相信是 .NET 1.x 天)打算从中派生所有自定义异常类以区别于 BCL 异常,但后来(在我看来是正确的)忽略了这一点。这些天的常见/良好做法是直接从Exception(或其他自定义类)派生所有自定义异常类。

    【讨论】:

      【解决方案3】:

      在我看来,例外是你最好的选择。

      在我和我读过的其他一些人看来,ApplicationException 是最好的过度工程。

      还有更多意见here

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-05-15
        • 2021-09-09
        • 2021-12-18
        • 2012-11-25
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多