public class ChainedExceptionDemo {
public static void main(String[] args) {
try {
method1();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public static void method1() throws Exception {
try {
method2();
}
catch(Exception ex) {
throw new Exception("New info from method1", ex);
}
}
public static void method2() throws Exception {
throw new Exception("New info from method2");
}
}
java.lang.Exception: New info from method1
at ChainedExceptionDemo.method1(ChainedExceptionDemo.java:16)
at ChainedExceptionDemo.main(ChainedExceptionDemo.java:4)
Caused by: java.lang.Exception: New info from method2
at ChainedExceptionDemo.method2(ChainedExceptionDemo.java:21)
at ChainedExceptionDemo.method1(ChainedExceptionDemo.java:13)
... 1 more
method2 抛出一个异常,该异常被method1 的catch 块所捕获,并被包装成一个新异常
。该新异常被抛出,并在main 方法中的catch 块中被捕获。printStackTrace() 方法:
首先,显示从method1 中抛出的新异常,然后显示从method2 中抛出的原始异常
public static void main(String[] args) {
try {
method1();
}
catch(Exception ex) {
ex.printStackTrace();
}
}
public static void method1() throws Exception {
try {
method2();
}
catch(Exception ex) {
throw new Exception("New info from method1", ex);
}
}
public static void method2() throws Exception {
throw new Exception("New info from method2");
}
}
java.lang.Exception: New info from method1
at ChainedExceptionDemo.method1(ChainedExceptionDemo.java:16)
at ChainedExceptionDemo.main(ChainedExceptionDemo.java:4)
Caused by: java.lang.Exception: New info from method2
at ChainedExceptionDemo.method2(ChainedExceptionDemo.java:21)
at ChainedExceptionDemo.method1(ChainedExceptionDemo.java:13)
... 1 more
method2 抛出一个异常,该异常被method1 的catch 块所捕获,并被包装成一个新异常
。该新异常被抛出,并在main 方法中的catch 块中被捕获。printStackTrace() 方法:
首先,显示从method1 中抛出的新异常,然后显示从method2 中抛出的原始异常