是否应该将.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
- 是否应该将.close()方法放到finally块中?
- close()方法应该在finally语句中调用吗?
- java的try-catch-finally块中,finally中的代码是否一定会执行?
- 解决try catch finally中close的问题
- finally块
- finally块
- finally块
- finally块
- java中finally语句块注意事项
- java Finally块中代码什么时候执行
- 不能在finally块中return
- 深度探究Java 中 finally 语句块
- finally块中代码的执行
- PO: Finally close error
- 将DATA段放到FRAM中的方法
- NSTimer不能放到子线程中去执行否则定时器里边的方法一次都不会执行,应该把它放到主线程才行
- 程序员面试金典: 9.14 Java 14.2在Java中,若在try-catch-finally的try语句块中插入return语句,finally语句块是否还会执行?
- 将java放到oracle中运行
- debug快捷键
- poj2796Feel Good(笛卡尔树)
- GCD Practicum
- Google在KDD2013上关于CTR的一篇论文(转载)
- [开源项目]:GMap.Net开发之地址解析与路径查找
- 是否应该将.close()方法放到finally块中?
- 【LeetCode】Candy
- hql使用聚合函数之小结
- 协同过滤算法的问题及解决方案
- matlab出错自动中断
- Java中的null到底是什么?
- wine 和 bcompare
- 解决fusionchart内存溢出及fusionchart object exists
- System.Diagnostics.Debug和System.Diagnostics.Trace