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
相关推荐
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 中的自动资源管理是指在程序执行完毕后自动关闭资源,以免资源泄露或占用。 Java 1.7 之前,我们需要通过 finally 块来释放资源,这种方法有点繁琐。从 ...
JDK7 中新增了 try-with-resource 语法,实现了自动关闭外部资源的功能。当一个外部资源的句柄对象实现了 AutoCloseable 接口,那么就可以将上面的板式代码简化为以下形式: ```java public static void main...
标题中的"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语句进行教学。这可能包括以下几个部分: 1. **概念介绍**:首先会解释try-with-...
在实际开发中,为了更好的错误处理和资源管理,通常会使用try-with-resources语句和Connection池。 MySQL Connector/J 5.1.26版本可能不支持最新的MySQL特性或安全性更新,因此,对于新的项目,建议使用更现代的...
例如,使用`Connection.setAutoCommit(false)`开启手动事务,使用Apache Commons DBCP或C3P0等连接池库来提高性能,以及使用try-with-resources语句确保资源始终得到正确关闭。 总的来说,`mysql-connector-java-...
1. **多语言支持(Project Coin)**:Java 7引入了对多种语言特性的支持,如Strings in Switch语句、try-with-resources语法、钻石操作符(,用于自动类型推断)以及改进的for-each循环。 2. **文件系统API(NIO.2)*...
总的来说,JDK7的“try-with-resources”特性是Java资源管理的一个重大改进,它提高了代码的可读性和可靠性,降低了出错的可能性,同时也鼓励了更好的编程实践。通过利用这一特性,开发者可以更高效地编写和维护代码...
在实际开发中,为了提高代码的健壮性和可维护性,建议使用try-with-resources语句或者手动管理数据库连接池(如C3P0、HikariCP等)。 总的来说,gbase-connector-java-8.3-bin.jar是Java程序员连接GBase数据库的...
同时,使用更现代的JDBC API,如Java 8的try-with-resources语句,可以更有效地管理数据库连接和资源。 此外,与社区交流和问题反馈是开源项目的重要组成部分。如果在使用过程中遇到任何问题,可以通过留言或其他...
- **Try-with-resources**:自动关闭资源的语法结构,提高代码的可读性和可靠性。 - **多线程并发工具的增强**:包括Fork/Join框架,用于并行计算,以及新的并发集合类。 - **类型推断**:在泛型中引入类型推断,...
在 JDK 7 中引入的 try-with-resources 语句极大地简化了资源管理,特别是对于那些需要在使用后关闭的资源,如文件流、数据库连接等。然而,在早期版本中,如果要处理多个资源,代码可能会变得有些冗余。JDK 9 ...
- 使用try-with-resources语句自动管理资源的关闭。 - 在生产环境中,配置合适的超时设置,避免长时间阻塞的连接占用资源。 总的来说,`mysql-connector-java-5.1.46-bin.jar`是Java开发者与MySQL数据库互动的...
这个版本引入了许多新特性,包括类型推断(钻石操作符)、多 catch 块、try-with-resources语句、动态类型语言支持等,旨在提升开发效率和代码的可读性。 2. **OpenJDK**: OpenJDK项目始于2006年,是Oracle公司与...
2. 字符串改进:支持字符串开关案例(switch case)和尝试自动资源管理(try-with-resources)。 3. 多 catches:允许在一个catch块中处理多个异常类型。 4. 集合工厂方法:在集合接口中添加了静态工厂方法,如List....
Java 语言更新之一是 try-with-resources 语句的简化。在 Java SE 9 中,如果您已经拥有一个资源作为 final 或 effectively final 变量,可以直接使用该变量在 try-with-resources 语句中,而不需要声明新的变量。...
5. **异常处理**:在实际应用中,你应该使用try-with-resources或者finally块来确保即使在发生异常时也能正确关闭连接。 除了上述基本操作,你还可以使用JDBC批处理、事务管理、连接池等高级特性来优化数据库访问...
Redis分布式锁的try-with-resources实现 一、简介 在当今这个时代,单体应用(standalone)已经很少了,java提供的synchronized已经不能满足需求,大家自然 而然的想到了分布式锁。谈到分布式锁,比较流行的方法有3...
在Java 7及更高版本中,引入了一种新的语法糖,称为"try-with-resources",它使得资源管理变得更加简洁和高效。在本文中,我们将详细探讨`try()`括号中的代码含义,特别是与实现`Closeable`接口相关的知识点。 首先...