java中的异常链

来源:互联网 发布:网络应急预案流程图 编辑:程序博客网 时间:2024/06/05 15:14
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("司机一滴酒 亲人两行泪");
            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;
        }
    }

}



}
原创粉丝点击