Java中资源关闭的处理方式
来源:互联网 发布:篮球比赛赛程软件 编辑:程序博客网 时间:2024/06/05 11:50
本文就关于IO资源的处理问题,提出三种方案。
- close()放在try块中
- close()放在finally块中
- 使用try-with-resource语句
close()放在try块中
//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();}
这种方式容易造成IO资源的泄露,因为对于IO资源来说不管操作的结果如何都必须关闭。
close()放在finally块中
//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(); }
这种方式在JDK1.7
之前,推荐使用这种方式,但是,这种方式还是有问题,因为,在try块和finally块中可能都会发生Exception。
使用try-with-resource语句
//try-with-resource statementtry (PrintWriter out2 = new PrintWriter( new BufferedWriter( new FileWriter("out.txt", true)))) { out2.println("the text");} catch (IOException e) { e.printStackTrace();}
这种方式可能是最好的,Java官方推荐使用这种方式,但是,使用的前提是你的jdk版本在1.7以上。
总结
因为不管什么情况下(异常或者非异常)资源都必须关闭,在jdk1.6之前,应该把close()放在finally块中,以确保资源的正确释放。
如果使用jdk1.7以上的版本,推荐使用try-with-resources语句。
原文链接:should-close-be-put-in-finally-block-or-not
翻译:crane-yuan
[ 转载请保留原文出处、译者和译文链接。]
0 0
- Java中资源关闭的处理方式
- Java正常关闭资源的方式
- Java关闭数据库资源的两种方式
- 静态代码扫描中Java资源对象关闭的探究
- java中多线程并发的处理方式
- weblogic无法关闭的处理方式.kill
- UE4中资源加载资源的方式
- UE4中资源加载资源的方式
- java中,如何处理点击关闭按钮 只是关闭当前的界面
- Java资源的定位方式
- java的处理方式
- java中异常处理的10中方式
- java中当finally遇到return的处理方式
- java中数据库访问方式的不同处理数据总结:
- java中异常处理的几种方式
- java编程中对事务的处理方式
- Java的图形处理中经常使用坐标方式
- android activity的关闭处理的几种方式
- 您只能在 HTML 输出流中使用 document.write。 如果您在文档已加载后使用它(比如在函数中),会覆盖整个文档。
- KVC和KVO的简要介绍
- maven遇到的坑——5
- Socket中send()函数和recv()函数详解
- 秒杀多线程第六篇 经典线程同步 事件Event
- Java中资源关闭的处理方式
- HotSpot的算法实现
- JAVA线程安全之synchronized关键字的正确用法
- MS Office 自动化编程 - 从Word文档中获取文档属性
- iOS钥匙串KeyChain相关参数的说明
- Android PendingIntent简介
- python之嵌套函数与闭包
- C++构造函数的使用
- 自己动手写工具包之端口扫描器