猿问

最终块总是在Java中执行吗?

最终块总是在Java中执行吗?

考虑到这段代码,我能绝对肯定认为finally块总是执行,无论发生什么。something()是?

try {  
    something();  
    return success;  }  catch (Exception e) {   
    return failure;  }  finally {  
    System.out.println("I don't know if this will get printed out");}


蝴蝶刀刀
浏览 485回答 4
4回答

子衿沉夜

是,finally将在执行try或catch代码块。唯一的一次finally不会被称为:如果你调用System.exit()如果JVM首先崩溃如果jvm到达无限循环(或其他不可中断、非终止的语句),则try或catch块如果操作系统强制终止JVM进程,例如,kill -9 <pid>论UNIX如果主机系统死亡,例如电源故障、硬件错误、操作系统恐慌等等如果finally块将由守护进程线程执行,所有其他非守护进程线程将在此之前退出。

富国沪深

此外,尽管这是一种糟糕的做法,但如果在Finish块中有返回语句,则它将超过来自常规块的任何其他返回。也就是说,以下块将返回false:try&nbsp;{&nbsp;return&nbsp;true;&nbsp;}&nbsp;finally&nbsp;{&nbsp;return&nbsp;false;&nbsp;}从Final块抛出异常也是一样的。
随时随地看视频慕课网APP

相关分类

Java
我要回答