编程语言
首页 > 编程语言> > finally块总是在Java中执行吗?

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