是否应该将.close()方法放到finally块中?

来源:互联网 发布:windows 10官方下载 编辑:程序博客网 时间:2024/06/06 05:52

    下面是3种不同的关闭输出器(output writer)的方法。第一种方法将close()方法放到try语句中,第二种方法将close()方法放到finally语句中,而第三种方法使用了try-with-resources声明。哪一种方法是对的,或是最好的呢?

//将close()方法放到try语句中try {PrintWriter out = new PrintWriter(new BufferedWriter(new FileWriter("out.txt", true)));out.println("the text");out.close();} catch (IOException e) {e.printStackTrace();}
//将close()方法放到finally语句中PrintWriter out = null;try {out = new PrintWriter(new BufferedWriter(new FileWriter("out.txt", true)));out.println("the text");} catch (IOException e) {e.printStackTrace();} finally {if (out != null) {out.close();}}
//使用try-with-resource声明try (PrintWriter out2 = new PrintWriter(new BufferedWriter(new FileWriter("out.txt", true)))) {out2.println("the text");} catch (IOException e) {e.printStackTrace();}

答案

    无论是出现异常,还是没有异常,都需要关闭输出器(Writer),因此应该将close()方法放到finally语句中。

    从Java 7开始,我们可以使用try-with-resource声明。

原文地址:Should .close() be put in finally block or not?

0 0
原创粉丝点击