Java中Exception Translation
和Exception Chaining
之间有什么区别?
答案 0 :(得分:3)
Effective Java 中的 Joshua Bloch -
例外翻译
较高层应该捕获较低级别的异常
并且,取而代之的是抛出可以用来解释的异常
更高层次的抽象。
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);
}
高级异常的构造函数将原因传递给链接感知 超类构造函数,因此它最终传递给Throwable的一个chainingaware构造函数,例如Throwable(Throwable):
// Exception with chaining-aware constructor
class HigherLevelException extends Exception {
HigherLevelException(Throwable cause) {
super(cause);
}
}