Java教程

Java 异常传播

首先从栈顶抛出一个异常,如果未捕获到异常,则将调用堆栈下降到前一个方法;如果未捕获到那里,则异常再次下降到前一个方法,依此类推直到它们被捕获或到达调用堆栈的最底部为止。这称为异常传播。
注意: 规则: 默认情况下,未经检查的异常会在调用链(已传播)中转发。

异常传播程序

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...");
    }
}
Output:exception handled normal flow...
异常传播
在上面的示例中,m()方法中发生异常,该异常未被处理,因此被传播到上一个n()方法未处理,再次传播到p()方法处理异常。
可以使用main()方法,p()方法,n()方法或m()方法在调用堆栈中的任何方法中处理异常。

注意: 规则: 默认情况下,已检查异常不在调用链中传播(传播)。

该程序描述了不传播检查的异常

class TestExceptionPropagation2{
    void m(){
        throw new java.io.IOException("device error");
    //checked exception }
    void n(){
        m();
    }
    void p(){
        try{
            n();
        }
        catch(Exception e){
            System.out.println("exception handeled");
        }
    }
    public static void main(String args[]){
        TestExceptionPropagation2 obj=new TestExceptionPropagation2();
        obj.p();
        System.out.println("normal flow");
    }
}
Output:Compile Time Error
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4