教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

Java中,catch里return了,finally是否执行?

更新时间:2023年10月25日10时14分 来源:传智教育 浏览次数:

好口碑IT培训

  在Java中,当在catch块中使用return语句时,finally块仍然会执行。无论是否有异常抛出,finally块都会在catch块中的return语句之后执行。这是Java语言规范所定义的行为。

  接下来笔者用一个示例来说明这一点:

public class FinallyExample {
    public static void main(String[] args) {
        System.out.println(divide(10, 2));
        System.out.println(divide(10, 0));
    }

    public static int divide(int numerator, int denominator) {
        try {
            int result = numerator / denominator;
            return result; // 在这里使用return语句
        } catch (ArithmeticException e) {
            System.err.println("发生了除以零的异常: " + e.getMessage());
            return -1;
        } finally {
            System.out.println("finally块执行");
        }
    }
}

  在这个示例中,divide方法用于执行除法操作。如果没有异常抛出,try块中的计算会得出结果,并在catch块中的return语句之前返回结果。无论是否发生异常,finally块中的语句都会执行。

catch里return了,finally是否执行?

  示例的输出将是:

5
发生了除以零的异常: / by zero
finally块执行
-1
finally块执行

  正如我们可以看到,finally块在每次调用divide方法时都会执行,即使在异常情况下也是如此。这确保了资源的释放或其他清理操作可以在方法退出之前完成。

0 分享到:
和我们在线交谈!