现在,我在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版提供了两个引号:


  如果要定义异常类型层次结构,则高度
  建议层次结构应浅而宽,以便创建
  尽可能少的基类。原因是基类行事
  作为将大量错误视为一个错误的一种方式,通常这是
  危险的。
  
  (...)
  
  这里也有版本控制分支。如果您定义一个新的
  从现有异常类型派生的异常类型,然后是所有代码
  捕获现有基本类型的代码现在将捕获您的新类型为
  好。在某些情况下,这可能是理想的;在某些情况下,
  这可能是不希望的。问题在于它实际上取决于
  捕获基类的代码将响应异常类型,并且
  从中派生的类型。从未预料到新异常的代码
  现在可能行为异常,并打开了安全漏洞。此人
  定义新的例外类型无法了解所有地方
  基本异常被捕获以及如何处理。因此,在
  实践中,不可能在这里做出明智的决定。

07-28 02:04
查看更多