当一个异常链接到另一个异常时,它描述了该异常的原因。Throwable类的构造函数支持Java中的链式异常。它们如下-
Throwable(Throwable cause) Throwable(String msg, Throwable cause)
Throwable类具有支持异常链接的方法-
方法 | 描述 |
---|---|
getCause() | 返回异常的原始原因 |
initCause(引发原因) | 设置调用异常的原因 |
让我们看一下Java中异常链接的示例。
public class Example { public static void main(String[] args) { try { //创建一个异常 ArithmeticException e = new ArithmeticException("Apparent cause"); //设置异常原因 e.initCause(new NullPointerException("Actual cause")); //引发异常 throw e; } catch(ArithmeticException e) { //获取异常的实际原因 System.out.println(e.getCause()); } } }
输出结果
java.lang.NullPointerException: Actual cause