是的,
finally将在执行
try或
catch代码块后调用。
唯一
finally不会被调用的时间是:
- 如果您调用 System.exit()
- 如果您调用 Runtime.getRuntime().halt(exitStatus)
- 如果JVM首先崩溃
- 如果JVM在try或catch块中达到了无限循环(或其他不间断,不终止的语句)
- 操作系统是否强行终止了JVM进程;例如,kill -9
在UNIX上 - 如果主机系统死机;例如,电源故障,硬件错误,操作系统崩溃等
- 如果该finally块将由守护程序线程执行并且所有其他非守护程序线程在finally调用之前退出



