请求大佬支援!为什么执行的是第一个return,而不是最后一个return?

为什么运行结果是10,而不是20呢

不应该执行最后一个return吗

public class Test {

    public static void main(String[] args) {
        System.out.println(aa());
    }

    public static int aa() {
        int a = 0;
        try{
            a = a/0;
        }catch (Exception e){
            a = a+10;
            return a;
        }finally {
            a = a+10;
        }
        return a;
    }
}

因为a = a/0;会抛出异常,执行了catch的return。虽然执行return后会执行finally,但是由于已经返回了,累加值不会提现出来。

因为执行第一个return后就跳出aa()方法了,不会再往下执行了

catch里面已经返回数据了。后面只会执行finally里面的代码,try/catch块外面的代码不会执行了

finally其实已经执行了,他是优于return执行的.但是他不会影响到变量的值

抛异常-> a=10; -> return a;-> 有finally, a的值 10 先进栈-> 执行finally a = 20 -> 将栈里的10返回。