易百教程

147、什么是异常传播?

异常首先从栈顶抛出,如果没有被捕获,则将调用栈下降到前一个方法,如果没有捕获到,异常再次下降到前一个方法,依此类推,直到它们被 捕获或直到它们到达调用堆栈的最底部。 此过程称为异常传播。 默认情况下,检查的异常不会传播。


class TestExceptionPropagation1 {

    void m() {
        int data = 50 / 0;
    }

    void n() {
        m();
    }

    void p() {
        try {
            n();
        } catch (Exception e) {
            System.out.println("exception handled");
        }
    }

    public static void main(String args[]) {
        TestExceptionPropagation1 obj = new TestExceptionPropagation1();
        obj.p();
        System.out.println("normal flow...");
    }
}

运行结果如下:

exception handled
normal flow...