language-agnostic - 异常层次结构真的有用吗?

标签 language-agnostic oop exception

我突然意识到,我从来没有见过一个异常层次结构,它创建子类但捕获父类实际上是有用的(当然,对于必须派生的基 Exception 类除外)。

异常层次结构真的有用吗,xor 是否应该从语言的基本异常类派生所有异常?

最佳答案

当您需要在不同位置进行不同粒度的捕获时,异常层次结构对于将相关异常分组在一起很有用。

将所有应用程序异常放在一个地方是最常见的用例。这使您可以捕获 MyAppException任何时候您想捕获来自应用程序的所有错误,但仍会在适当的时候捕获更具体的异常。 (在 .NET 中,ApplicationException 类用于此目的,但由于各种原因已被弃用。)

但是您也可以在模块边界或以任何其他有意义的方式将异常组合在一起。使用FooModuleException对于来自 Foo 的异常模块,但捕获并处理 FooModuleMustFrobnicate专门用于 Foo 内部.或任何等效情况。

我在不同的时间使用了所有这些模式。

关于language-agnostic - 异常层次结构真的有用吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3347778/

相关文章:

线性模式匹配算法?

java - 我应该使用复合主键吗?

sql - 数据库ID最佳做法

c++ - 为什么类不能继承其父类的成员类型?

java - 检查 JUnit 是否未引发异常

arrays - 加入算法,例如字符串数组

c# - system.reflection 问题,GetFields 不返回所有内容

java - 子类可以使用相同的方法,但具有不同的变量类型吗?如何? (Java)

exception - Kotlin/Android – 带有 lambda 的数据类中的 KotlinReflectionInternalError

java - Guava java EventBus实例化错误