Java 中的 finally 块是否始终执行?
javaobject oriented programmingprogramming更新于 2025/9/19 0:12:17
是的,除非由于 JVM 崩溃或调用 System.exit() 导致程序异常终止,否则 finally 块始终会执行。
- 无论是否发生异常,finally 块始终会执行。
- 如果发生异常(例如关闭文件或数据库连接),则使用 finally 块来清理代码。
- 我们不能说 finally 块始终会执行,因为有时如果将任何语句(例如 System.exit())或某些类似代码写入 try 块,则程序将自动终止,并且在这种情况下不会执行 finally 块。
- 由于其他情况,例如当 JVM 内存不足时,当我们的 java 进程从任务管理器或控制台强制终止时,当我们的机器因电源故障和 try 块中的死锁情况而关闭时,finally 块将不会执行。
示例1
public class FinallyBlock {
public static void main(String args[]){
try {
int a=10,b=30;
int c = b/a;
System.out.println(c);
} catch(ArithmeticException ae){
System.out.println(ae);
} finally {
System.out.println("finally block is always executed");
}
}
}
在上面的例子中,finally 块无论是否发生异常都会执行。
输出
3 finally 块始终执行
示例 2
public class FinallyBlock {
public static void main(String args[]) {
try {
System.out.println("我在try块中");
System.exit(1);
} catch(Exception ex){
ex.printStackTrace();
} finally {
System.out.println("我在finally块中");
}
}
}
在上面的例子中,由于 try 块中的 System.exit(1) 条件,finally 块将不会执行。
输出
我在 try 块中
相关文章
有用资源
java 参考教程 - 该教程包含有关 java 的更多信息:https://www.cainiaomax.com/java/

