Java——有异常语句时的finally的执行顺序

前边已经说过了finally的作用,接下来说一下在包含finally的方法中,它的执行情况

  • 需要注意的是,在执行到finally之前,JVM退出了的话,finally才会执行。所以,如果finally之前有return语句,它还是会执行,下边我们来举一个例子
public class test01 {
    public static void main(String[] args) {
        System.out.println(getInt());
    }

    public static  int getInt(){
        int a =10;
        try{
            System.out.println(a/0);
            a=20;
        }catch (ArithmeticException e){
            a=30;
            return a;
        }finally{
            a=40;
        }
        return a;
    }
}

输出结果为:30

有人会说,这不是没有执行吗,但是在调试的时候,会发现finally被执行了,只不过在执行之前,return 30这个路径已经生成,然后执行finally,最后再执行return返回30(也就是说finally在return执行)。

但如果finally前面有turn,finally里面也有return呢,我相信结果不言而喻,当然是返回finally里面的。

发布了24 篇原创文章 · 获赞 15 · 访问量 6126

猜你喜欢

转载自blog.csdn.net/weixin_42173451/article/details/89519019