gpt4 book ai didi

java - System.exit() 结果无法执行 finally block

转载 作者:行者123 更新时间:2023-12-03 22:18:04 25 4
gpt4 key购买 nike

这个问题在这里已经有了答案:





How does Java's System.exit() work with try/catch/finally blocks? [duplicate]

(6 个回答)


9年前关闭。




我正在处理 My application's under maintanace module

try {
if (isUndermaintanace) {
System.exit(1);
} else {
prepareResources();
}
} catch (Exception e) {
printStack(e);
} finally {
cleanResources();
}

当我经过 isundermaintanace true最后没有执行。

我错过了什么?有没有其他方法可以做到这一点?

最佳答案

Finally如果您杀死 VM(或者如果 VM 以其他方式死机),则不会执行。 System.exit() 是一种相当粗糙的杀死程序的方法,而 finally 是一个高级 OOP 概念。 System.exit() 非常快地退出,尽可能少地进行清理。

如果您进入任务管理器并终止进程或发出 kill -9在这个过程中,您希望最终执行吗?含糊地(非常含糊地)是同一件事。

有几点值得注意。特别是,我在帖子的第一部分撒了一点谎。将 System.exit() 比作具有误导性真正立即杀死一个程序。特别是,运行了关闭 Hook ,并且 if configured , 终结器实际上可以运行。但是请注意,文档强烈建议不要使用 runFinalizersOnExit .

关于java - System.exit() 结果无法执行 finally block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14905006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com