Hes*_*sey 14 java signals finally
我正在cmd.exeWindows中运行我的Java应用程序.如果我通过按Ctrl-C强行停止进程,并且当时的代码在try块中运行,那么该finally块是否仍会被执行?
在我的测试中似乎是,它被执行了.
Adr*_*scu 15
确保运行某些代码以响应操作系统信号(这是Ctrl-C执行的操作,它发送SIGINT)的正确方法是注册"shutdownHook".这是关于处理它的StackOverflow问题,这里有一篇文章,其中详细介绍了JVM的信号处理,而不是您可能想知道的.
Zac*_*h L 11
虽然您的最终代码可能已在您的Windows机器上执行(我无法使用Linux重现它),但最终根据此文档:
注意:如果在执行try或catch代码时JVM退出,则finally块可能无法执行.同样,如果执行try或catch代码的线程被中断或终止,则即使应用程序作为一个整体继续,finally块也可能无法执行.
因此,即使用户试图提前退出,我也不会使用finally块来确保执行一段代码.如果您需要,可以像Adrian Petrescu提到的那样使用Shutdown Hooks
| 归档时间: |
|
| 查看次数: |
5657 次 |
| 最近记录: |