我正在我的应用程序在维护模块下
try {
if (isUndermaintanace) {
System.exit(1);
} else {
prepareResources();
}
} catch (Exception e) {
printStack(e);
} finally {
cleanResources();
}
当我通过isundermaintanace时,真的最后没有执行。
我错过了什么?还有别的方法吗?
如果JVM在执行try或cat代码时退出(例如System.exit()
),则最终块可能不会执行。同样,如果执行try或catch代码的线程被中断或终止,即使应用程序作为一个整体继续,最终块也可能不会执行。
<代码>系统。退出立即退出程序,绕过任何其他代码执行(例如最终块)。如果要在最后运行块后退出程序,请抛出异常。
最后,如果您杀死虚拟机(或者虚拟机以其他方式死亡),则不会执行。系统exit()是一种相当粗糙的终止程序的方法,而finally是一种高级OOP概念。系统exit()快速退出,尽可能少地进行清理。
如果您进入任务管理器并终止了进程,或者在进程上发出了一个kill-9,您会期望最终执行吗?这是模糊的(非常模糊的)同一件事。
有几件事值得注意。特别是,我在帖子的第一部分撒了一点谎。把系统比作代码是一种误导。exit()以真正立即终止程序。特别是,关闭挂钩是运行的,如果配置了,终结器实际上可以运行。然而,请注意,文档相当强烈地建议不要使用runFinalizersOnExit。
问题内容: 我有一个使用TensorFlow创建多层感知器网络(带有辍学)的Python脚本,以进行二进制分类。即使我很小心地设置了Python和TensorFlow种子,我仍然得到了不可重复的结果。如果我运行一次然后再次运行,则会得到不同的结果。我什至可以运行一次,退出Python,重新启动Python,再次运行并获得不同的结果。 我尝试过的 我知道有人发布了有关在TensorFlow中获得不可
问题内容: 我有嵌套尝试此Java代码: 我想知道是否在发生异常时始终执行。我问这个是因为catch块有或语句。 什么时候执行?当我得到时,我得到了? 我只想在执行任何catch块之后也执行finally块。 问题答案: (单击)。
我使用Flink SQL计算基于事件时间的窗口分析。在我的数据源每天晚上空闲之前,一切都正常工作,之后直到第二天数据再次开始流动时才产生最后一分钟的结果。 我已尝试将<code>设置为table.exec.source。空闲超时,但没有帮助。我能做什么?
到目前为止,我认为有效的final和final或多或少是等价的,如果在实际行为中不完全相同,JLS会将它们视为相似的。然后我发现了这个人为的场景: 显然,JLS在这两者之间产生了重要的区别,我不知道为什么。 我阅读其他线程,如 最终和有效最终之间的差异 有效的最终变量vs最终变量 变量“有效最终”是什么意思 但他们并没有详细说明。毕竟,在更广泛的层面上,它们似乎几乎相当。但深入研究,他们显然有所不
有人能告诉我如何打印以下课程的成绩吗:
我有java中的代码片段,比如 注意:我们可能会将返回值发送给fonten,并调用另一个APi调用finishProcess()。但事实并非如此