Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/266.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 为什么建议从Exception而不是ApplicationException继承_C#_.net_Exception - Fatal编程技术网

C# 为什么建议从Exception而不是ApplicationException继承

C# 为什么建议从Exception而不是ApplicationException继承,c#,.net,exception,C#,.net,Exception,自.NET 1.1或2.0以来,Microsoft已更改了用户异常定义的建议。它是从System.Exception而不是System.ApplicationException继承用户异常。我在StackOverflow上找到了,但它只是以FxCop规则的形式重复了MSDN建议。然而,FxCop规则中给出的解释也没有说服力。 从您在应用程序中继承用户异常的内容和原因来看?我猜大多数程序员继承表单System.Exception,因为对于大多数异常(也有说明),这将是一种很好的做法,并且大多数程序

自.NET 1.1或2.0以来,Microsoft已更改了用户异常定义的建议。它是从
System.Exception
而不是
System.ApplicationException
继承用户异常。我在StackOverflow上找到了,但它只是以FxCop规则的形式重复了MSDN建议。然而,FxCop规则中给出的解释也没有说服力。
从您在应用程序中继承用户异常的内容和原因来看?

我猜大多数程序员继承表单
System.Exception
,因为对于大多数异常(也有说明),这将是一种很好的做法,并且大多数程序员遵循最佳实践。另外,我猜这个问题是基于基本观点的,因为人们可能会认为在某些上下文中没有必要继承自
System.Exception
,最好选择其他基本的异常类,因此,这可能是一个有争议的方法。

因为从ApplicationException继承并没有提供足够的价值来值得实践。发件人:

如果设计的应用程序需要创建自己的异常,建议您从Exception类派生自定义异常。最初认为自定义异常应该派生自ApplicationException类;然而,在实践中,还没有发现这会增加显著的价值


在99%的情况下,我从System.Exception中调用innerhit。如果我需要更特殊的东西,比如特殊的ArgumentException,我会从System.ArgumentException中调用innerhit。但通常一个ArgumentException就足够了,我不需要为此定制异常。异常只是异常树中的第一个根。当我编写一个模块(应用程序、服务、框架)时,我发现需要用户异常,该模块利用异常并抛出自己的异常,这应该与IO和其他.NET framework异常区分开来。没有这种需要,若你们想把它区分开来,那个么从系统继承。异常就足够了。这就是建议存在的原因,它已经足够从系统继承了。从系统继承的异常。ApplicationException仅在您想要破坏约定时使用。我会说,从系统继承。ApplicationException声明此异常“属于”应用程序,而不是参数或IO之类的特定情况。从基异常类继承看起来很奇怪。这取决于您定义的“值”。我想说,从设计师的角度来看,我从基本异常类继承这一事实意味着我的异常类提供了一些基本信息。如果它继承自ApplicationException,那么它只是一些应用程序级别的异常。