总结,一共有以下两种情况,finally块的代码不会被执行:
1.如果JVM在执行try或catch代码时退出(虚拟机停止运行,即崩溃或关闭System.exit()),那么finally块可能不会执行。
2.如果执行try或catch代码的线程被中断或杀死,即使应用程序整体继续运行,finally块也可能不会执行。
注:
JVM退出和崩溃是两种不同的情况。
JVM退出是指Java虚拟机正常停止运行,例如当程序执行完毕或调用System.exit()方法时。
JVM崩溃是指Java虚拟机由于遇到致命错误或未处理的异常而意外停止运行。
标签:Java,虚拟机,基础,System,finally,JVM,执行,异常 From: https://www.cnblogs.com/fulaien/p/17172505.html