shaokel
2020-09-04 14:20
采纳率: 98.5%
浏览 107
已采纳

请求大佬支援!为什么执行的是第一个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;
    }
}
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

5条回答 默认 最新

  • storm_huang 2020-09-04 14:47
    已采纳

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

    已采纳该答案
    打赏 评论
  • 西贝Ning 2020-09-04 14:41

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

    打赏 评论
  • 暮春之初 2020-09-04 14:42

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

    打赏 评论
  • 风丶飞 2020-09-04 15:34

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

    打赏 评论
  • miaoch 2020-09-04 15:56

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

    打赏 评论

相关推荐 更多相似问题