14. 异常处理中 try{}中有一个return,问finally{}会不会执行,最终结果是什么?

14. 异常处理中 try{}中有一个return,问finally{}会不会执行,最终结果是什么?

// 这么问太过枯燥了,看代码题目吧 求问最终代码输出结果
public class Test {
    public static void main(String[] args) {
        System.out.println(test());
    }
    private static int test() {
        int temp = 1;
        try {
            System.out.println(temp);
            return ++temp;
        } catch (Exception e) {
            System.out.println(temp);
            return ++temp;
        } finally {
            ++temp;
            System.out.println(temp);
        }
    }
}
// 结果是1,3,2 哦
# 题解:
# 第一个输出结果1 没有任何疑问
# 当代码执行到try块中的return时,最终返回的返回结果就已经定了 就是此时的temp值:2
# 但是由于finally代码块必须执行,所以++temp;执行 此时temp:3 
# 面试回答:
# try{}中有一个return,finally是会执行的,在【return中】执行
# 当代码执行到try块中的return时,返回的值会被存入一个临时空间,然后继续执行finally代码块,如果此时finally中有新的return值 那么临时返回值会被finally中的return替换
posted @ 2021-10-14 21:35  因心光  阅读(103)  评论(0编辑  收藏  举报