在.NET中哪个类应该用作自定义异常的基类?

时间:2010-07-20 07:41:49

标签: .net exception

  

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

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

  

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

Source

  

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

Source

此外,当我为70-536进行一些练习测试时,出现了类似的问题,正确的答案标记为ApplicationException。

官方指南是什么?

3 个答案:

答案 0 :(得分:6)

ApplicationException是第一个建议,但过了一段时间MS决定它只是增加了继承深度而没有给出任何好处,因此他们将建议改为仅使用Exception

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

答案 1 :(得分:2)

好问题。简短的回答是ApplicationException类非正式弃用/过时,原因有很多。 (主要的一个可能是异常类型应该/不需要指示源(这是Source属性的用途。)

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

答案 2 :(得分:1)

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

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

还有更多意见here