finally块总是在Java中执行吗?
作者:互联网
考虑到这段代码,我可以绝对确定finally块总是执行,不管是什么东西()?
try {
something();
return success;
}
catch (Exception e) {
return failure;
}
finally {
System.out.println("I don't know if this will get printed out");
}
解决方法:
是的,最终将在执行try或catch代码块后调用.
最终不会被召唤的唯一时间是:
>如果调用System.exit()
>如果JVM首先崩溃
>如果JVM在try或catch块中到达无限循环(或其他一些不可中断的,非终止语句)
>如果操作系统强行终止JVM进程;例如,杀死-9< pid>在UNIX上
>如果主机系统死亡;例如,电源故障,硬件错误,OS恐慌等
>如果finally块将由守护程序线程执行,并且所有其他非守护程序线程在最终被调用之前退出
标签:try-catch-finally,java,return 来源: https://codeday.me/bug/20190911/1802737.html