在.NET解决方案中创建异常类时的最佳实践是:从派生System.Exception
自System.ApplicationException
?
Answers:
根据Jeffery Richter在《框架设计指南》一书中的说法:
System.ApplicationException
是一个不应属于.NET框架的类。
它旨在具有某些含义,因为您可能会捕获“所有”应用程序异常,但是未遵循该模式,因此它没有任何价值。
Exception
?如果是这样,你能这样说吗?
您应该从派生自定义异常System.Exception
。
现在甚至MSDN都说要忽略ApplicationException
:
如果要设计需要创建自己的异常的应用程序,建议您从Exception类派生自定义异常。最初认为自定义异常应该从ApplicationException类派生。然而,在实践中,尚未发现这可以增加重大价值。有关更多信息,请参见处理异常的最佳实践。
http://msdn.microsoft.com/zh-CN/library/system.applicationexception.aspx
ApplicationException
被认为无用的是反对的有力且关键的论点ApplicationException
。
结果:请勿使用。从派生Exception
。
该框架的作者自己认为ApplicationException一文不值:
在这里进行了很好的跟进:
如有疑问,我遵循他们的书《框架设计指南》。
http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756
博客文章的主题在那里进一步讨论。
rp
我曾经做过:
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.");
}
}
它允许做以下事情之间的区别:
我知道不建议您使用ApplicationException,但它的效果很好,因为很少有不遵守ApplicationException模式的类。