链式异常有助于将一个异常与其他异常相关联。通常,我们需要引发自定义异常,并希望保留原始异常的详细信息,在这种情况下,我们可以使用链式异常机制。考虑下面的示例,在该示例中,我们将在保留原始异常消息的同时引发自定义异常。
public class Tester { public static void main(String[] args) { try { test(); }catch(ApplicationException e) { System.out.println(e.getMessage()); } } public static void test() throws ApplicationException { try { int a = 0; int b = 1; System.out.println(b/a); }catch(Exception e) { throw new ApplicationException(e); } } } class ApplicationException extends Exception { public ApplicationException(Exception e) { super(e); } }
输出结果
java.lang.ArithmeticException: / by zero
throwable类使用以下方法支持链式异常:
Throwable(Throwable原因) -原因是当前异常。
Throwable(String msg,Throwable原因) -msg是异常消息,原因是当前异常。
getCause-返回实际原因。
initCause(Throwable cause) -设置调用异常的原因。