Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.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# C中异常层次结构的良好实践#_C#_Exception_Exception Handling - Fatal编程技术网

C# C中异常层次结构的良好实践#

C# C中异常层次结构的良好实践#,c#,exception,exception-handling,C#,Exception,Exception Handling,现在我在PHP之后编写C#代码 在PHP中,我根据Zend框架的建议创建了一个异常层次结构(Symfony现在使用类似的东西) 在package(例如Order)中,我创建了文件夹Exception,在这个文件夹中(从php翻译为C#): 我需要很多异常(相对而言)来方便地表达域中的内容 是否有创建异常层次结构的良好实践 我完全理解创作的技术细节。《良好实践》一期。CLR通过C#引用的两段话,第四版: 如果您想定义异常类型层次结构,它是非常有用的 建议层次结构浅而宽,以便创建 尽可能少的基类。原

现在我在PHP之后编写C#代码

在PHP中,我根据Zend框架的建议创建了一个异常层次结构(Symfony现在使用类似的东西)

在package(例如Order)中,我创建了文件夹Exception,在这个文件夹中(从php翻译为C#):

我需要很多异常(相对而言)来方便地表达域中的内容

是否有创建异常层次结构的良好实践

我完全理解创作的技术细节。《良好实践》一期。

CLR通过C#引用的两段话,第四版:

如果您想定义异常类型层次结构,它是非常有用的 建议层次结构浅而宽,以便创建 尽可能少的基类。原因是基类起作用 作为一种将大量错误视为一个错误的方法,这通常是 危险

(……)

这里也有版本控制的分支。如果你定义了一个新的 从现有异常类型派生的异常类型,然后是所有代码 捕获现有基类型的将捕获新类型作为 好。在某些情况下,这可能是需要的,在某些情况下, 这可能不是我们想要的。问题是,这真的取决于怎么做 捕获基类的代码响应异常类型和 从中派生的类型。从未预料到新异常的代码 现在可能会出现不可预测的行为,并打开安全漏洞。人 定义新的异常类型无法知道发生异常的所有位置 捕获基本异常以及如何处理它。因此,在 实践,在这里不可能做出明智的决定


使用内置的或创建自定义的。通过特异性来处理它们——首先是最特异的,最后是最不特异的。不要对继承或接口发疯,这只会使它变得比必须的更复杂。
namespace Order.Exception
{
    interface ExceptionInterface{}
    class ApplicationException : System.ApplicationException, ExceptionInterface{}
    class OrderNotFoundException : ApplicationException {}
    class SomethingHappensException : ApplicationException{}
}