我应该从.NET中的Exception或ApplicationException派生自定义异常吗?
在.NET解决方案中创建异常类的最佳实践是什么:从我应该从.NET中的Exception或ApplicationException派生自定义异常吗?,.net,exception,.net,Exception,在.NET解决方案中创建异常类的最佳实践是什么:从System.exception或从System.ApplicationException派生?是反对ApplicationException的有力而关键的论据 结果:不要使用它。从异常< /代码> . 框架的作者自己考虑应用异常无价值: 这里有一个很好的跟进: 如果有疑问,我会遵循他们的书籍框架设计指南 这篇博文的主题将在这里进一步讨论 rp根据Jeffery Richter在《框架设计指南》一书中的说法: System.Applicat
System.exception
或从System.ApplicationException
派生?是反对ApplicationException
的有力而关键的论据
结果:不要使用它。从<代码>异常< /代码> . 框架的作者自己考虑应用异常无价值: 这里有一个很好的跟进: 如果有疑问,我会遵循他们的书籍框架设计指南 这篇博文的主题将在这里进一步讨论
rp根据Jeffery Richter在《框架设计指南》一书中的说法:
System.ApplicationException
是一个不应属于.NET framework的类
它的意思是,您可以潜在地捕获“所有”应用程序异常,但没有遵循该模式,因此它没有任何价值。我习惯于这样做:
private void buttonFoo_Click()
{
try
{
foo();
}
catch(ApplicationException ex)
{
Log.UserWarning(ex);
MessageVox.Show(ex.Message);
}
catch(Exception ex)
{
Log.CodeError(ex);
MessageBox.Show("Internal error.");
}
}
它允许执行以下操作之间的差异:
- 我必须修复的C代码系统错误
- “正常”用户错误,不需要我更正
我知道不建议使用ApplicationException,但它非常有效,因为存在不尊重ApplicationException模式的异常。您应该从
System.Exception
派生自定义异常
甚至MSDN现在也表示要忽略ApplicationException
:
如果您正在设计应用程序
这需要建立自己的机制
例外情况,建议您导出
来自异常的自定义异常
班级。原来以为
自定义异常应派生自
ApplicationException类;
然而,在实践中,这并没有得到证实
发现能增加显著价值。对于
有关详细信息,请参阅
你知道的很少。任何遵循框架设计准则的人都不会从ApplicationException派生。如果要维护此模式,则需要创建自己的类型,如MyApplicationExcptionBase,并从中派生所有自定义异常。顺便说一句,指南说要创建几个派生的异常类型。你说得对:今天,如果我必须从头开始,我将创建一个“UserError”异常。尽管如此,我不会重构我的旧代码:这不是一个很好的批评。令人难以置信的是,考虑到微软出版社为MCTS 70-536考试准备的材料清楚地表明了相反的观点。。。啊!永远不要完全相信MS考试书。我读过的很少,总是充满了错误。这实际上并不能回答问题。您是说自定义应用程序异常应该继承自
异常
?如果是,你能这么说吗?是的,康拉德说得对。另一件相关的事情是:另一件被认为是有用的(或“最佳实践”),但实际上不是。