有的时候我们会用printStackTrace来打印异常栈,有可能我们会在处理异常的时候同时又抛出一个异常。
自定义两个异常
class MyException1 extends Exception{
}
class MyException2 extends Exception{
MyException2(Throwable throwable){
super(throwable);
}
MyException2(){
super();
}
}
接下来定义一个A 类,并在他的f()方法里调用g()方法,然后在f处理g里抛出的异常的时候再次抛出一个异常
class A{
public void f() throws MyException2{
try {
g();
} catch (MyException1 e) {
// TODO Auto-generated catch block
e.printStackTrace();
//这里做了修改
throw new MyException2(e);
}
}
public void g() throws MyException1{
throw new MyException1();
}
}
接下来我们在main里跑一下
public class Main {
public static void main(String[] args) {
A a = new A();
try {
a.f();
} catch (MyException2 e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}