C# C中异常层次结构的良好实践#
现在我在PHP之后编写C#代码 在PHP中,我根据Zend框架的建议创建了一个异常层次结构(Symfony现在使用类似的东西) 在package(例如Order)中,我创建了文件夹Exception,在这个文件夹中(从php翻译为C#): 我需要很多异常(相对而言)来方便地表达域中的内容 是否有创建异常层次结构的良好实践 我完全理解创作的技术细节。《良好实践》一期。CLR通过C#引用的两段话,第四版: 如果您想定义异常类型层次结构,它是非常有用的 建议层次结构浅而宽,以便创建 尽可能少的基类。原因是基类起作用 作为一种将大量错误视为一个错误的方法,这通常是 危险 (……) 这里也有版本控制的分支。如果你定义了一个新的 从现有异常类型派生的异常类型,然后是所有代码 捕获现有基类型的将捕获新类型作为 好。在某些情况下,这可能是需要的,在某些情况下, 这可能不是我们想要的。问题是,这真的取决于怎么做 捕获基类的代码响应异常类型和 从中派生的类型。从未预料到新异常的代码 现在可能会出现不可预测的行为,并打开安全漏洞。人 定义新的异常类型无法知道发生异常的所有位置 捕获基本异常以及如何处理它。因此,在 实践,在这里不可能做出明智的决定C# C中异常层次结构的良好实践#,c#,exception,exception-handling,C#,Exception,Exception Handling,现在我在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{}
}