java finally close_Java经典面试题:是否应将.close()放入finally块?

以下是关闭输出编写器的3种不同方式。第一个在try子句中放置close()方法,第二个在try子句中放置close,第三个使用try-with-resources语句。哪个是最合适的?

//close() is in try clausetry {

PrintWriter out = new PrintWriter(

new BufferedWriter(

new FileWriter("out.txt", true)));

out.println("the text");

out.close();} catch (IOException e) {

e.printStackTrace();}

//close() is in finally clausePrintWriter 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 statementtry (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-resources语句。

最后,开发这么多年我也总结了一套学习Java的资料与面试题,如果你在技术上面想提升自己的话,可以关注我,私信发送领取资料或者在评论区留下自己的联系方式,有时间记得帮我点下转发让跟多的人看到哦。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值