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

java7 twr (try - with - resource)新特性偶尔看到的一个关于 try catch 的用法 通常我们使用 try catch 捕获异常的 如果遇到类似 IO 流的处理 要在 finally 部分关闭 IO 流 当然这个是 JDK1 7 之前的写法了 在 JDK7 优化后的 try with resource 语句 该语句确保了每个资源

大家好,我是讯享网,很高兴认识大家。

偶尔看到的一个关于 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中释放外部资源 ,从而让代码更加优雅

小讯
上一篇 2025-02-25 18:26
下一篇 2025-03-20 10:45

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/37625.html