当Java程序突然退出时,是否可以执行某些操作?

当Java程序突然退出时,是否可以执行某些操作?,java,Java,如果程序突然退出或出现任何异常,我需要记录日志。例如,当有人在运行程序时按Ctrl+C时,我需要记录它是否突然退出。我怎样才能做到这一点?您可以尝试使用一个。根据文件,钩子将在以下情况下执行: 程序正常退出 虚拟机被终止 这涵盖了您的^C情况,但无疑会涵盖诸如机器被拔出之类的情况(除非机器上有某种冗余硬件) 这是一些关于设计的注释 粗略的例子: Runtime.getRuntime().addShutdownHook(new Thread() { @Override publ

如果程序突然退出或出现任何异常,我需要记录日志。例如,当有人在运行程序时按Ctrl+C时,我需要记录它是否突然退出。我怎样才能做到这一点?

您可以尝试使用一个。根据文件,钩子将在以下情况下执行:

  • 程序正常退出
  • 虚拟机被终止
这涵盖了您的
^C
情况,但无疑会涵盖诸如机器被拔出之类的情况(除非机器上有某种冗余硬件)

这是一些关于设计的注释

粗略的例子:

Runtime.getRuntime().addShutdownHook(new Thread() {
    @Override
    public void run() {
        System.out.println("System was shutdown");
    }
});

我认为它将在CTRL+C和
SIGTERM
上运行,但我认为还有其他方法可以终止该程序,因为它不会运行。我见过嵌入式系统可能会记录断电事件。需要一个相当大的电容器和一个相当小的中断服务例程,但这是可以做到的。另一种方法是记录成功的关机,并在启动时检查程序的最后一次运行是否成功关机。