Java_异常链
emm 其实就是异常一直抛出传递,但是最后只会显示最后一个异常,这就是异常链。
需要用到Trowable的cause属性
但是除了Error、Exception和RuntimeException外,都不存在带cause参数的构造器
public class HotelAgeException extends Exception {
public HotelAgeException(){
super("18岁以下,80岁以上的住客必须由亲友陪同");
}
}
package com.imooc.test;
public class TryDemoFive {
public static void main(String[] args) {
try {
testThree();
} catch (Exception e) { //这里捕获了 Exception 打印出所有异常【类似递归】
e.printStackTrace();
}
}
public static void testThree() throws Exception {
try {
testTwo();
} catch (Exception e) { //这里捕获了 Exception 抛出Exception:我是新产生的异常2
Exception e1=new Exception("我是新产生的异常2");
e1.initCause(e); //开启跟踪异常
throw e1; //抛出 e1异常
}
}
public static void testTwo() throws Exception {
try {
testOne();
} catch (HotelAgeException e) { //这里捕获了 HotelAgeException 抛出Exception:新产生异常1
throw new Exception("我是新产生的异常1",e);
}
}
public static void testOne() throws HotelAgeException {
throw new HotelAgeException();
}
}
结语: 有点像递归,一层一层往下,但记得 用 initCause
打开异常链
本文来自博客园,作者:咸瑜,转载请注明原文链接:https://www.cnblogs.com/bi-hu/p/17181897.html