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

时间:2012-12-09 23:29:41

标签: java exception-handling

有办法做到这一点吗?

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

谢谢

3 个答案:

答案 0 :(得分:2)

在main中:

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

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

答案 1 :(得分:1)

使用异常来控制程序执行的方式与设计方式不一致。使用关闭钩子会好得多。

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

这样可以正常处理大多数正常停机,但在硬暂停(SIGKILL)的情况下,不能保证关机挂钩运行。但这并不比你试图通过finally块关闭流更糟糕。

答案 2 :(得分:0)

我找到了办法!我花了这么多时间,没有注意到当程序终止时流会自动关闭......

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

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

谢谢大家的帮助