当前位置:首页 > 编程笔记 > 正文
已解决

java7 twr (try - with - resource)新特性

来自网友在路上 168868提问 提问时间:2023-10-09 13:19:43阅读次数: 68

最佳答案 问答题库688位专家为你答疑解惑

偶尔看到的一个关于 try()...catch() 的用法,通常我们使用 try...catch() 捕获异常的,如果遇到类似IO流的处理,要在finally部分关闭IO流,当然这个是JDK1.7之前的写法了;

在JDK7优化后的 try-with-resource 语句,该语句确保了每个资源,在语句结束时关闭。

所谓的资源是指在程序完成后,必须关闭的流对象。写在()里面的流对象对应的类都必须是Closeable的子类;

try(Resource res = xxx){ //可指定多个资源//Code...
}catch (IOException e) {e.printStackTrace();
}

try块退出时,会自动调用res.close()方法,关闭资源。

1)在java7以前,程序中使用的资源需要被明确地关闭,这个体验有点繁琐。

InputStream is = null;
OutputStream os = null;
try {//...
} catch (IOException e) {//...
}finally{try {if(os!=null)os.close();if(is!=null)is.close();} catch (IOException e2) {//...}
}  

如果{}中的代码块出现了异常,会被catch捕获,然后执行catch中的代码,接着执行finally中的码,其中catch中的代码有了异常才会被执行,finally中的代码无论有没有异常都会被执行。

2)JDK1.7之后

try-with-resource中的代码一般放的是对资源的申请,如果{}中的代码出项了异常,()中的资源就会被关闭,这在inputstream和outputstream的使用中会很方便。

try(InputStream is = new FileInputStream("...");OutputStream os = new FileOutputStream("...");
){//...
}catch (IOException e) {//...
}

使用TWR后可以不用在finally中释放外部资源 ,从而让代码更加优雅

查看全文

99%的人还看了

猜你感兴趣

版权申明

本文"java7 twr (try - with - resource)新特性":http://eshow365.cn/6-17819-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!