面试题:简述 try catch finally,try 里有 return,finally 还执行么 ?

在 Java 中,try-catch-finally 结构用于异常处理。try 块中包含可能抛出异常的代码,catch 块用于捕获并处理异常,而 finally 块则用于执行无论是否发生异常都必须执行的代码。

关键点:

  1. finally 块的执行:无论 try 块中是否发生异常,或者是否有 return 语句,finally 块中的代码都会执行。
  2. try 块中有 return 语句:即使在 try 块中有 return 语句,finally 块仍然会在 return 之前执行。如果 finally 块中也有 return 语句,它会覆盖 try 块中的 return 语句。

示例代码

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

    public static int test() {
        try {
            System.out.println("Inside try block");
            return 1;
        } catch (Exception e) {
            System.out.println("Inside catch block");
            return 2;
        } finally {
            System.out.println("Inside finally block");
            // 如果取消注释,finally 中的 return 会覆盖 try 中的 return
            // return 3;
        }
    }
}

输出结果

Inside try block
Inside finally block
1

解释

  1. try 块中的 return 语句:程序首先执行 try 块中的代码,遇到 return 1; 时,它会准备返回 1
  2. finally 块的执行:在 return 之前,finally 块中的代码会被执行,输出 "Inside finally block"
  3. 最终返回值:如果 finally 块中没有 return 语句,try 块中的 return 1; 会生效,最终返回 1。如果 finally 块中有 return 3;,则最终返回 3

结论

无论 try 块中是否有 return 语句,finally 块中的代码都会执行。如果 finally 块中有 return 语句,它会覆盖 try 块中的 return 语句。

THE END
点赞6 分享
评论 抢沙发
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码图片

    暂无评论内容