在 Java 中,finally 块通常是一定会执行的,但有少数例外情况会导致 finally 不运行。
只要 try 块开始执行,finally 一般都会执行,无论:
try 或 catch 中有 returnbreak / continue示例:
try {
return 1;
} finally {
System.out.println("finally");
}
✅ 输出:finally,然后方法返回
System.exit)try {
System.exit(0);
} finally {
System.out.println("finally");
}
❌ finally 不会执行
原因:System.exit() 直接终止 JVM
这些都不是 Java 能控制的,finally 不可能执行
Thread.stop();
⚠️ 极端情况下可能不执行 finally(不推荐使用)
if (false) {
try {
...
} finally {
...
}
}
❌ finally 不会执行(因为 try 没进去)
❌ “return 会跳过 finally”
✅ 不会,finally 在 return 前执行
❌ “异常会跳过 finally”
✅ 不会
finally 在 Java 中几乎一定会执行,唯一的例外是 JVM 被强制退出或程序未进入 try。
如果你是在面试题或异常设计场景下问的,我也可以结合具体场景帮你分析。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。