我突然意识到,我从来没有见过一个异常层次结构,它创建子类但捕获父类实际上是有用的(当然,对于必须派生的基 Exception 类除外)。
异常层次结构真的有用吗,xor 是否应该从语言的基本异常类派生所有异常?
最佳答案
当您需要在不同位置进行不同粒度的捕获时,异常层次结构对于将相关异常分组在一起很有用。
将所有应用程序异常放在一个地方是最常见的用例。这使您可以捕获 MyAppException
任何时候您想捕获来自应用程序的所有错误,但仍会在适当的时候捕获更具体的异常。 (在 .NET 中,ApplicationException
类用于此目的,但由于各种原因已被弃用。)
但是您也可以在模块边界或以任何其他有意义的方式将异常组合在一起。使用FooModuleException
对于来自 Foo
的异常模块,但捕获并处理 FooModuleMustFrobnicate
专门用于 Foo
内部.或任何等效情况。
我在不同的时间使用了所有这些模式。
关于language-agnostic - 异常层次结构真的有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347778/