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

6 java

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

Rob*_*ska 10

您可以尝试使用关闭钩子.从文档中,钩子将在以下情况下执行:

  • 该程序正常退出
  • VM已终止

这涵盖了您的^C情况,但是可疑地会涵盖机器被拔出的情况(除非机器上有某种冗余硬件).

以下是有关设计的一些注意事项.

原油示例:

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

  • 我见过可以实际记录掉电事件的嵌入式系统.需要一个相当大的电容器和一个非常小的中断服务程序,但它可以做到. (2认同)
  • 另一种方法是记录成功关闭并在启动时检查程序的最后一次运行是否已成功关闭. (2认同)