java自动关闭资源

Wesley13
• 阅读 538

1.6和以前是这样的,但这样的缺点是finally中也可能报错(如关闭流):

BufferedReader br = null;
        try {
            br = new BufferedReader(new FileReader(""));
        } catch (IOException e) {
            e.printStackTrace();
        } finally {
            if (br != null)
                br.close();
        }

1.7新增try-with-resources 语句:

try (BufferedReader br = new BufferedReader(new FileReader(""))) {
            br.readLine();
        }

1.7中只要实现了AutoCloseable或Closeable接口的类或接口,都可以使用try-with-resource来实现异常处理和资源关闭。

public abstract class Reader implements Readable, Closeable

public interface Closeable extends AutoCloseable
点赞
收藏
评论区
推荐文章
待兔 待兔
4个月前
手写Java HashMap源码
HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22
Wesley13 Wesley13
3年前
java try后没有catch,只有finnally
今天看jdk1.6源码  ThreadPoolExecutor中Worker的runTask方法  catch(RunTimeExceptionex)中tthrowex,会把ex抛到上层,上层try没有catch异常,该异常还会往上层抛,try后直接跟finnally,finnally中runLock.unlock(),会释放锁;总结:
Wesley13 Wesley13
3年前
Java日期时间API系列31
  时间戳是指格林威治时间1970年01月01日00时00分00秒起至现在的总毫秒数,是所有时间的基础,其他时间可以通过时间戳转换得到。Java中本来已经有相关获取时间戳的方法,Java8后增加新的类Instant等专用于处理时间戳问题。 1获取时间戳的方法和性能对比1.1获取时间戳方法Java8以前
Wesley13 Wesley13
3年前
PHP 异常处理
//报错,扑捉不到异常//try{//require('test_try_catch.php');//}catch(Exception$e){//echo$egetMessage();//}//可以扑捉到异常tr
Wesley13 Wesley13
3年前
Java中return返回结果的优先级
在Java开发时,异常处理是非常普遍的。先看这样一道关于异常处理的代码publicstaticintgetNumer(){inta1;try{returna;}catch(Exceptione){
Wesley13 Wesley13
3年前
Java输入输出流
1.什么是IO   Java.io是大多数面向数据流的输入/输出类的主要软件包。此外,Java也对块传输提供支持,在核心库java.nio中采用的便是块IO。  流IO的好处是简单易用,缺点是效率较低。块IO效率很高,但编程比较复杂。   JavaIO模型 :   Java的IO
Wesley13 Wesley13
3年前
Java Socket编程——通信是这样炼成的
Java最初是作为网络编程语言出现的,其对网络提供了高度的支持,使得客户端和服务器的沟通变成了现实,而在网络编程中,使用最多的就是Socket。像大家熟悉的QQ、MSN都使用了Socket相关的技术。下面就让我们一起揭开Socket的神秘面纱。Socket编程一、网络基础知识(参考计算机网络)关于计算机网络部分可以参
Wesley13 Wesley13
3年前
Java基础入门之异常的那些事儿
点击上方“Java进阶学习交流”,进行关注后台回复“Java”即可获赠Java学习资料今日鸡汤莫买沃洲山,时人已知处。前言大家好,我是Java进阶者。这篇文章我们主要介绍Java基础入门之try...catch、finally、throws关键字和抛出异常知识,一起来学习下吧!一、try.
Wesley13 Wesley13
3年前
J2EE项目异常处理
       为什么要在J2EE项目中谈异常处理呢?可能许多java初学者都想说:“异常处理不就是try….catch…finally吗?这谁都会啊!”。笔者在初学java时也是这样认为的。如何在一个多层的j2ee项目中定义相应的异常类?在项目中的每一层如何进行异常处理?异常何时被抛出?异常何时被记录?异常该怎么记录?何时需要把checkedExc
小万哥 小万哥
8个月前
Java 异常处理与正则表达式详解,实例演练及最佳实践
Java异常Try...Catch在Java代码执行期间,可能会发生各种错误,包括程序员编码错误、用户输入错误以及其他不可预料的状况。当错误发生时,Java通常会停止并生成错误消息,这个过程称为抛出异常。try...catch语句try语句允许您定义一段代