当前位置: 首页 > 面试题库 >

是否总是使用Java执行finally块?

闽焕
2023-03-14
问题内容

考虑到此代码,我是否可以绝对确定该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");
}

问题答案:

是的,finally将在执行trycatch代码块后调用。

唯一finally不会被调用的时间是:

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


 类似资料:
  • 问题内容: 考虑到此代码,我是否可以绝对确定该块始终执行,无论它是什么? 问题答案: 是的,将在执行或代码块后调用。 唯一不会被调用的时间是: 如果您调用 System.exit() 如果您调用 Runtime.getRuntime().halt(exitStatus) 如果JVM首先崩溃 如果JVM在try或catch块中达到了无限循环(或其他不间断,不终止的语句) 操作系统是否强行终止了JVM

  • 问题内容: 是否有任何条件最终可能无法在Java中运行?谢谢。 问题答案: 注意:如果在执行try或catch代码时JVM退出,则finally块可能不会执行。同样,如果执行try或catch代码的线程被中断或杀死,即使整个应用程序继续运行,finally块也可能不会执行。 我不知道finally块无法执行任何其他方式…

  • 问题内容: 我知道Java Webstart在安全的沙箱下运行。是否可以在jar中包含.dll / .exe(或让Webstart将其下载到本地计算机)然后执行(使用Runtime.exec或进程等) 请指教。任何建议/评论都欢迎! 问题答案: 是。您必须将包裹在一个文件中,然后使用 请参阅此处以获得更详细的描述。 如果要运行可执行文件,那么最好的选择是将其打包为资源,分解为(例如)一个临时目录,

  • 我为每个生成环境都有一个自定义属性文件夹。我已经为它定义了配置文件并添加了不同的文件夹。它们会被正确地捡起来。但是,src/main/resources中的资源没有被拾取。如果netbeans 8有什么不同的话,我会使用它。我的问题是一旦激活了不同的概要文件,是否需要在概要文件中重新指定主要资源或测试资源?多谢了。 我正在使用Maven开发一个java web项目。有一些web服务的xml文件(h

  • 本文向大家介绍JavaScript 用finally()执行清理,包括了JavaScript 用finally()执行清理的使用技巧和注意事项,需要的朋友参考一下 示例 当前有一个建议(尚未成为ECMAScript标准的一部分),finally向承诺中添加回调,无论承诺是被实现还是被拒绝,都将执行该回调。从语义上讲,这类似于块的finally子句try。 通常,您将使用此功能进行清理: 重要的是要

  • 如果SETNX命令(NX test和SET)保证在“redis Sentinel system”上下文中的redis master上执行? 如果在“Redis Sentinel System”上下文中保证它是原子的? 在阅读文档后,我的理解是对两者都是肯定的,因为: 公元。1只有主程序可以接受写操作,并且由于SETNX有一个set/write组件,它必须转到主程序(因为所有的写操作都通过主程序)。