考虑到这段代码,不管something()是什么,finally块总是执行,我可以是absolutely sure吗?

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

推荐答案

可以,在执行trycatch代码块后将调用finally.

唯一不会拨打finally次电话的是:

  1. 如果您调用System.exit()
  2. 如果你调用Runtime.getRuntime().halt(exitStatus)
  3. 如果JVM先崩溃
  4. 如果jvm在trycatch挡路中达到无限循环(或其他一些不可中断、不可终止的语句)
  5. 如果操作系统强制终止JVM进程;e、 g.在UNIX上是kill -9 <pid>
  6. 如果主机系统死机;例如,电源故障、硬件错误、操作系统死机等
  7. 如果finally挡路将由守护程序线程执行,并且所有其他非守护程序线程在调用finally之前退出

Java相关问答推荐

CSS应用于一个端点,但不应用于Thymeleaf中的另一个端点

如何在Javascript中设置文本区域圆角的样式

路径映射未发生

Spring Boot Maven包

我可以在MacOS上使用什么Java函数来在适当的设备上以适当的音量播放适当的alert 声音?

如何在EXCEL单元格中添加形状和文本

在JDK 1.8源代码中,为什么使用A-B 0来确定哪个更大,而不是A B?

为什么当我创建Robot对象时,JavaFX引发IlLegalStateException异常?

由于在生成器模式中使用泛型,lambda表达式中的返回类型错误

Java泛型类方法的静态返回类型是否被类型擦除?

Java堆中的许多java.time.ZoneRegion实例.ZoneId实例不应该被缓存吗?

有谁能帮我修一下这个吗?使输出变得更加整洁

如何在@CsvSource中传递空格作为值

Java在操作多个属性和锁定锁对象时使用同步和易失性

将双倍转换为百分比

何时调用密封层次 struct 的switch 中的默认情况

在Java中将对象&转换为&q;HashMap(&Q)

如何在Spring Boot中为不同的部署环境管理多个.properties文件?

升级版本后出现非法访问错误

Maven创建带有特定类的Spring Boot jar和普通jar