`

java 7, try-with-resources

阅读更多

try-with-resources 是jdk 7 开始有的新特性,可以极大的方便写资源创建与释放的程序。常规的资源释放的写法是:

 BufferedReader br = new BufferedReader(new FileReader(path));
    try {
        return br.readLine();
    } finally {
        if (br != null) br.close();
    }

如果br.close 方法中也可能抛出异常,那么可能还得在finally 中也写try-catch

 

BufferedReader br= new BufferedReader(new FileReader(path));
try {
        return br.readLine();
    } finally {
       try{
           if (br != null) br.close();
            catch(Exception e){
               //do something....
           }
    }

 

有了try-with-resources,可以如下写法,前提是资源实现了java.lang.AutoCloseable接口

 

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

如果要创建多个资源,可以直接写几个,而且保证释放的时候会按创建的时候的相反的顺序 来释放。

try(
   Source1 s1=new Source1();
   Source2 s2=new Source2();
 ){
  .....
}

 异常的话,依旧可以catch

try(
   Source1 s1=new Source1();
   Source2 s2=new Source2();
 ){
  //.....
}catch(Exception e){
  //....
} 

 要注意的是,如果是资源使用过程中与close()方法中同时抛出了异常,close()的异常会被“抑制”,为了查询被抑制的异常,调用异常的getSuppressed()方法,注:这也是jdk 7 中加入的特性。

 

try(
   Source1 s1=new Source1();
   Source2 s2=new Source2();
 ){
  //.....
}catch(Exception e){
  //....
  if( e.getSuppressed()!=null){
    //相应的处理
  }
}

 

详细的说明可见官网: http://docs.oracle.com/javase/tutorial/essential/exceptions/tryResourceClose.html

分享到:
评论

相关推荐

    Java try-with-resource语法使用解析

    public class TryWithResource { public static void main(String[] args) { try (BufferedInputStream bin = new BufferedInputStream(new FileInputStream(new File("test.txt"))); BufferedOutputStream bout ...

    Java使用 try-with-resources 实现自动关闭资源的方法

    Java 使用 try-with-resources 实现自动关闭资源的方法 Java 中的自动资源管理是指在程序执行完毕后自动关闭资源,以免资源泄露或占用。 Java 1.7 之前,我们需要通过 finally 块来释放资源,这种方法有点繁琐。从 ...

    Java如何优雅地关闭资源try-with-resource及其异常抑制

    JDK7 中新增了 try-with-resource 语法,实现了自动关闭外部资源的功能。当一个外部资源的句柄对象实现了 AutoCloseable 接口,那么就可以将上面的板式代码简化为以下形式: ```java public static void main...

    jdk-1.7-java-7-openjdk-amd64.zip

    标题中的"jdk-1.7-java-7-openjdk-amd64.zip"表明这是一个Java开发工具包(JDK)的压缩文件,版本为1.7,适用于AMD64架构的Linux系统。OpenJDK是Java Development Kit的一个开源实现,由Oracle公司支持并维护。这个...

    Try-with-resources-Cwiczenie

    标题 "Try-with-resources-Cwiczenie" 可能是一个练习或者教程,其主要内容可能是围绕如何在实际编程中运用try-with-resources语句进行教学。这可能包括以下几个部分: 1. **概念介绍**:首先会解释try-with-...

    mysql-connector-java-5.1.26-bin.zip

    在实际开发中,为了更好的错误处理和资源管理,通常会使用try-with-resources语句和Connection池。 MySQL Connector/J 5.1.26版本可能不支持最新的MySQL特性或安全性更新,因此,对于新的项目,建议使用更现代的...

    mysql-connector-java-5.1.45-bin.jar

    例如,使用`Connection.setAutoCommit(false)`开启手动事务,使用Apache Commons DBCP或C3P0等连接池库来提高性能,以及使用try-with-resources语句确保资源始终得到正确关闭。 总的来说,`mysql-connector-java-...

    jdk7 java7 jdk-7u75-windows-x64.zip

    1. **多语言支持(Project Coin)**:Java 7引入了对多种语言特性的支持,如Strings in Switch语句、try-with-resources语法、钻石操作符(,用于自动类型推断)以及改进的for-each循环。 2. **文件系统API(NIO.2)*...

    jdk7最新特性-trywresources

    总的来说,JDK7的“try-with-resources”特性是Java资源管理的一个重大改进,它提高了代码的可读性和可靠性,降低了出错的可能性,同时也鼓励了更好的编程实践。通过利用这一特性,开发者可以更高效地编写和维护代码...

    java 连接gbase驱动包gbase-connector-java-8.3-bin.jar

    在实际开发中,为了提高代码的健壮性和可维护性,建议使用try-with-resources语句或者手动管理数据库连接池(如C3P0、HikariCP等)。 总的来说,gbase-connector-java-8.3-bin.jar是Java程序员连接GBase数据库的...

    mysql-connector-java-5.1.7-bin

    同时,使用更现代的JDBC API,如Java 8的try-with-resources语句,可以更有效地管理数据库连接和资源。 此外,与社区交流和问题反馈是开源项目的重要组成部分。如果在使用过程中遇到任何问题,可以通过留言或其他...

    java-1.7.0-openjdk

    - **Try-with-resources**:自动关闭资源的语法结构,提高代码的可读性和可靠性。 - **多线程并发工具的增强**:包括Fork/Join框架,用于并行计算,以及新的并发集合类。 - **类型推断**:在泛型中引入类型推断,...

    如何在JDK 9中更简洁使用 try-with-resources 语句

    在 JDK 7 中引入的 try-with-resources 语句极大地简化了资源管理,特别是对于那些需要在使用后关闭的资源,如文件流、数据库连接等。然而,在早期版本中,如果要处理多个资源,代码可能会变得有些冗余。JDK 9 ...

    mysql-connector-java-5.1.46-bin.jar

    - 使用try-with-resources语句自动管理资源的关闭。 - 在生产环境中,配置合适的超时设置,避免长时间阻塞的连接占用资源。 总的来说,`mysql-connector-java-5.1.46-bin.jar`是Java开发者与MySQL数据库互动的...

    java-7-openjdk-amd64-linux.tar.gz

    这个版本引入了许多新特性,包括类型推断(钻石操作符)、多 catch 块、try-with-resources语句、动态类型语言支持等,旨在提升开发效率和代码的可读性。 2. **OpenJDK**: OpenJDK项目始于2006年,是Oracle公司与...

    java-windows-i586软件

    2. 字符串改进:支持字符串开关案例(switch case)和尝试自动资源管理(try-with-resources)。 3. 多 catches:允许在一个catch块中处理多个异常类型。 4. 集合工厂方法:在集合接口中添加了静态工厂方法,如List....

    JDK9-JSE-Java Language Updates-3.pdf

    Java 语言更新之一是 try-with-resources 语句的简化。在 Java SE 9 中,如果您已经拥有一个资源作为 final 或 effectively final 变量,可以直接使用该变量在 try-with-resources 语句中,而不需要声明新的变量。...

    msbase.jar,mssqlserver.jar,msutil.jar,mysql-connector-java-5.1.40-bin.jar

    5. **异常处理**:在实际应用中,你应该使用try-with-resources或者finally块来确保即使在发生异常时也能正确关闭连接。 除了上述基本操作,你还可以使用JDBC批处理、事务管理、连接池等高级特性来优化数据库访问...

    redis-distribute-lock:Redis分布式锁的try-with-resources实现

    Redis分布式锁的try-with-resources实现 一、简介 在当今这个时代,单体应用(standalone)已经很少了,java提供的synchronized已经不能满足需求,大家自然 而然的想到了分布式锁。谈到分布式锁,比较流行的方法有3...

    关于java try()的括号中代码含义(实现Closeable接口)(csdn)————程序.pdf

    在Java 7及更高版本中,引入了一种新的语法糖,称为"try-with-resources",它使得资源管理变得更加简洁和高效。在本文中,我们将详细探讨`try()`括号中的代码含义,特别是与实现`Closeable`接口相关的知识点。 首先...

Global site tag (gtag.js) - Google Analytics