Java 中的异常翻译
和异常链接
有什么区别?
最佳答案
根据Joshua Bloch在Effective Java中的说法 -
异常翻译
较高层应捕获较低级别的异常
并在其位置抛出可以用以下方式解释的异常
更高层次的抽象。
try {
// Use lower-level abstraction to do our bidding
...
} catch(LowerLevelException e) {
throw new HigherLevelException(...);
}
异常链
它是异常翻译的特殊形式。
如果较低级别的异常可能对某人调试有帮助
导致更高级别异常的问题。较低级别的异常(原因)被传递给较高级别的异常,后者提供了一个
访问器方法(Throwable.getCause)来检索较低级别的异常:
try {
... // Use lower-level abstraction to do our bidding
} catch (LowerLevelException cause) {
throw new HigherLevelException(cause);
}
高级异常的构造函数将原因传递给链式感知 父类(super class)构造函数,因此它最终会传递给 Throwable 的链式构造函数之一,例如 Throwable(Throwable):
// Exception with chaining-aware constructor
class HigherLevelException extends Exception {
HigherLevelException(Throwable cause) {
super(cause);
}
}
关于java - Java 中的异常翻译与异常链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47806150/