代码阅读题-try、catch和finally中return

    public static void main(String[] args) {
        System.out.println(test());
    }
    public static int test(){
        int a= 1;
        try{
            a=2/0;
            return a;
        }catch (Exception e){
            a=3;
            return a;
        }finally {
            a=4;
            System.out.print("+nowcoder");
            // 有return就返回4,没有就返回3
            return a;
        }
    }

如果finally中没有return,按照catch中的值返回
finally中有return,按照finally中修改的值返回

一旦在finally块中使用了return、throw语句,将会导致try块、catch块中的return、throw语句失效

当程序运行到try块、catch块中的return、throw语句时,不会立即结束并返回,而是去执行finally块(如果有)中的语句,然后再回过头来执行return(但是不会返回finally中修改的值,而是返回catch中的旧值
但是如果finally中return或者throw了,会导致方法的立即终止(此时的返回值也是finally中修改的值

posted @ 2022-09-25 11:52  YaosGHC  阅读(20)  评论(0)    收藏  举报