zoukankan      html  css  js  c++  java
  • 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替换
    
  • 相关阅读:
    java private修饰的类和变量
    Volatile和Synchronized对可见性和原子性的支持
    Socket套接字
    Spring MVC请求执行流程
    Spring AOP术语解释
    equals()和==的区别
    约瑟夫环之递归算法
    数据库特性之原子性和一致性
    设计模式之单例模式
    平衡二叉树的插入旋转
  • 原文地址:https://www.cnblogs.com/forelim/p/15408607.html
Copyright © 2011-2022 走看看