3 回答

慕标琳琳
TA贡献1830条经验 获得超9个赞
来自Sun教程
注意:如果在执行try或catch代码时JVM退出,则finally块可能无法执行。同样,如果执行try或catch代码的线程被中断或终止,则即使应用程序作为一个整体继续,finally块也可能无法执行。
我不知道finally块不会执行的任何其他方式......

HUWWW
TA贡献1874条经验 获得超12个赞
System.exit关闭虚拟机。
终止当前运行的Java虚拟机。该参数用作状态代码; 按照惯例,非零状态代码表示异常终止。
此方法exit在类中调用该方法Runtime。此方法永远不会正常返回。
try {
System.out.println("hello");
System.exit(0);
}
finally {
System.out.println("bye");
} // try-finally
“bye”不会在上面的代码中打印出来。

慕斯709654
TA贡献1840条经验 获得超5个赞
只是为了扩展其他人所说的内容,任何不会导致JVM退出的事情都将导致finally块。所以方法如下:
public static int Stupid() {
try {
return 0;
}
finally {
return 1;
}
}
会奇怪地编译并返回1。
添加回答
举报
0/150
提交
取消