作者:明明如月君

链接:https://juejin.cn/post/6844904039402962958

来源:稀土掘金

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

英文原文:www.baeldung.com/java-finall…

1.概述

在本教程中,我们将研究 Java 中的 finally 关键字的用法。 我们将看到如何在错误处理中与 try / catch 块一起使用它。 尽管 finally 的目的是保证代码被执行,但是我们还将讨论 JVM 不执行 finally 代码的特殊情况。

我们还将讨论一些常见的陷阱,在这些陷阱中,finally 块可能会产生意外的结果。

2.什么是finally

try 关键字最后可以定义 finally 代码块。 finally 块中定义的代码,总是在 try 和任何 catch 块之后、方法完成之前运行。

正常情况下,不管是否抛出或捕获异常 finally 块都会执行。

2.1. 一个简单的例子

try {
    System.out.println("The count is " + Integer.parseInt(count));
} catch (NumberFormatException e) {
    System.out.println("No count");
} finally {
    System.out.println("In finally");
}

在这个示例中,不管参数的值是多少,JVM 都执行 finally 块并输出“ In finally”。

2.2 不带 catch 代码块的 finally

try {
    System.out.println("Inside try");
} finally {
    System.out.println("Inside finally");
}

结果

Inside try Insidefinally