繁体   English   中英

终止JAVA中的程序时捕获异常

[英]Catching an exception when terminating a program in JAVA

有没有办法做到这一点?

我正在编写一个必须迭代很长时间的程序,并且这样做时应该写到文件中。 我想在手动终止程序后立即关闭流,这样可以避免由于未关闭流而丢失数据的风险。 应该有一种使用异常处理的方法,但是我不确定。 任何建议都非常感谢!

谢谢

在主要方面:

try {
   startapp();
} finally {
   closeAll();
}

在closeAll()中,您将执行安全关闭操作,即使在发生异常时,也会执行finally块中的代码。

用异常来控制程序执行的方式是糟糕的设计。 使用关闭钩子会更好。

Runtime.getRuntime().addShutdownHook(new Thread() {
    @Override
    public void run() {
       // Close streams here
    }
});

尽管在硬停止(SIGKILL)的情况下,不能保证可以运行关闭钩子,但这样可以正常处理大多数正常的关闭。 但这并不比您尝试通过finally块关闭流更糟。

我找到了一个方法! 我为此浪费了很多时间,却没有注意到程序终止时流会自动关闭...

尚未写入数据是因为在write()方法之后我没有使用flush()方法,如下所示:

out.write(line);
out.flush();

谢谢大家的帮助

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM