异常链,是异常转化特殊形式.
使用情景:如果低层异常对于调试导致高层异常的问题有帮助,那么就使用异常链.将低层的异常原因传给高层异常,高层异常提供获取方法来获取低层的异常.
try {
//use low-levelabstraction to do our bidding
} catch (LowerLevelException cause) {
throw new HigherLevelException(cause);
}
高层异常的构造器将原因传递到支持链的超级构造器,因此它最终被传给Throwable的齐总运行异常链的构造器.例如Throwable:
class HigherLevelException extends Exception {
HigherLevelException(Throwable cause){
super(cause);
}
}
大多数标准的异常都有支持链的构造器,对于没有支持链的异常,可以利用Throwable的initCause方法设置原因.异常链不仅让你可以通过程序(getCause)访问原因,还可以将原因的堆栈归集成到更高层的异常中.