/**
* test1()抛出 “喝大了” 异常
* test2()调用test1(),捕获“喝大了” 异常,并且包装成运行时异常,继续抛出
* main方法中,调用test2(),尝试捕获test2()方法抛出异常
* @param args
*/
public static void main(String[] args) {
ChainTest ct = new ChainTest();
try {
ct.test2();
}catch(Exception e){
e.printStackTrace();
}
}
public void test1() throws DrunkException {
throw new DrunkException("喝酒别开车!!!");
}
public void test2() {
try {
test1();
} catch (DrunkException e) {
// TODO Auto-generated catch block
RuntimeException newExc = new RuntimeException("司机一滴酒 亲人两行泪");
newExc.initCause(e);
throw newExc;
}
}
结果:
java.lang.RuntimeException: 司机一滴酒 亲人两行泪
at com.test.ChainTest.test2(ChainTest.java:30)
at com.test.ChainTest.main(ChainTest.java:15)
Caused by: com.test.DrunkException: 喝酒别开车!!!
at com.test.ChainTest.test1(ChainTest.java:22)
at com.test.ChainTest.test2(ChainTest.java:27)
public class ChainTest {
/**
* test1()抛出 “喝大了” 异常
* test2()调用test1(),捕获“喝大了” 异常,并且包装成运行时异常,继续抛出
* main方法中,调用test2(),尝试捕获test2()方法抛出异常
* @param args
*/
public static void main(String[] args) {
ChainTest ct = new ChainTest();
try {
ct.test2();
}catch(Exception e){
e.printStackTrace();
}
}
public void test1() throws DrunkException {
throw new DrunkException("喝酒别开车!!!");
}
public void test2() {
try {
test1();
} catch (DrunkException e) {
// TODO Auto-generated catch block
RuntimeException newExc = new RuntimeException(e);
//newExc.initCause(e);
throw newExc;
}
}
}
}