finally和return的先后顺序

finally会在return前执行, 但是return的路径会先于finally形成. 代码解析如下:

    public class Test14 {
        public static void main(String[] args) {
            System.out.println(method());
        }
    
        public static int method() {
            int a = 10;
            int b = 0;
            try {
                System.out.println(a / b);
            } catch (ArithmeticException e) {
                //进入到catch语句,此时return 20(不是return a)路径已经形成,
                //然后执行finally a=30,但是return的是20不是a-30,所以return值不影响
                a = 20;
                return a;
            } finally {
                a = 30;
                //如果加上下面的return a,则替换掉原先的return路径,变为return 30. 
                //return a;
            }
            return 0;
        }    
    }

猜你喜欢

转载自blog.csdn.net/weixin_42098099/article/details/84711500
今日推荐