当Java程序突然退出时,是否可以执行某些操作?
如果程序突然退出或出现任何异常,我需要记录日志。例如,当有人在运行程序时按Ctrl+C时,我需要记录它是否突然退出。我怎样才能做到这一点?您可以尝试使用一个。根据文件,钩子将在以下情况下执行:当Java程序突然退出时,是否可以执行某些操作?,java,Java,如果程序突然退出或出现任何异常,我需要记录日志。例如,当有人在运行程序时按Ctrl+C时,我需要记录它是否突然退出。我怎样才能做到这一点?您可以尝试使用一个。根据文件,钩子将在以下情况下执行: 程序正常退出 虚拟机被终止 这涵盖了您的^C情况,但无疑会涵盖诸如机器被拔出之类的情况(除非机器上有某种冗余硬件) 这是一些关于设计的注释 粗略的例子: Runtime.getRuntime().addShutdownHook(new Thread() { @Override publ
- 程序正常退出
- 虚拟机被终止
^C
情况,但无疑会涵盖诸如机器被拔出之类的情况(除非机器上有某种冗余硬件)
这是一些关于设计的注释
粗略的例子:
Runtime.getRuntime().addShutdownHook(new Thread() {
@Override
public void run() {
System.out.println("System was shutdown");
}
});
我认为它将在CTRL+C和
SIGTERM
上运行,但我认为还有其他方法可以终止该程序,因为它不会运行。我见过嵌入式系统可能会记录断电事件。需要一个相当大的电容器和一个相当小的中断服务例程,但这是可以做到的。另一种方法是记录成功的关机,并在启动时检查程序的最后一次运行是否成功关机。