Java FileReader尝试捕获放置

时间:2016-08-10 12:57:00

标签: java try-catch

我是Java的新手,只是让我的头脑回到FileReader / FileWriter,但遇到了一些我不理解的东西,所以如果有人能解释为什么第一次尝试/捕获不起作用而第二次尝试/捕获呢? / p>

不起作用

try{
    FileWriter filewriter = new FileWriter(filepath);
    filewriter.write(json.toString());
    saved = true;
} catch (IOException ex) {
    Logger.getLogger(PresetData.class.getName()).log(Level.SEVERE, null, ex);
}

有效吗

try(FileWriter filewriter = new FileWriter(filepath)){
    filewriter.write(json.toString());
    saved = true;
} catch (IOException ex) {
    Logger.getLogger(PresetData.class.getName()).log(Level.SEVERE, null, ex);
}

将它放在那里而不是在try / catch中有什么区别?

感谢任何指导。

1 个答案:

答案 0 :(得分:2)

第一个示例仅捕获异常,但从不释放资源。 您必须通过调用finally块中的.close()函数手动关闭它:https://docs.oracle.com/javase/7/docs/api/java/io/OutputStreamWriter.html#close()

第二个例子被称为"尝试使用资源"你可以在这里阅读:https://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html - >它将自动为您调用.close()函数,因此您不必担心资源泄漏。

通过catch-block进行的异常处理在两个示例中都是相同的。