现在,我在PHP之后编写C#代码。
在PHP中,我按照Zend Framework的建议创建了一个异常层次结构(Symfony现在使用类似的东西)。
在包中(例如订购),我在此文件夹中创建文件夹Exception(从php转换为C#):
namespace Order.Exception
{
interface ExceptionInterface{}
class ApplicationException : System.ApplicationException, ExceptionInterface{}
class OrderNotFoundException : ApplicationException {}
class SomethingHappensException : ApplicationException{}
}
我需要很多例外(相对)来方便地表示域中的内容。
有没有创建异常层次结构的良好实践?
我完全了解创作的技术细节。良好做法的问题。
最佳答案
CLR通过C#,第4版提供了两个引号:
如果要定义异常类型层次结构,则高度
建议层次结构应浅而宽,以便创建
尽可能少的基类。原因是基类行事
作为将大量错误视为一个错误的一种方式,通常这是
危险的。
(...)
这里也有版本控制分支。如果您定义一个新的
从现有异常类型派生的异常类型,然后是所有代码
捕获现有基本类型的代码现在将捕获您的新类型为
好。在某些情况下,这可能是理想的;在某些情况下,
这可能是不希望的。问题在于它实际上取决于
捕获基类的代码将响应异常类型,并且
从中派生的类型。从未预料到新异常的代码
现在可能行为异常,并打开了安全漏洞。此人
定义新的例外类型无法了解所有地方
基本异常被捕获以及如何处理。因此,在
实践中,不可能在这里做出明智的决定。