如何使用Java 7的自动资源管理(try-with-
resources语句)集成创建/接收连接,查询数据库以及可能处理结果的通用JDBC习惯?(教程)
在Java 7之前,通常的模式是这样的:
Connection con = null;
PreparedStatement prep = null;
try{
con = getConnection();
prep = prep.prepareStatement("Update ...");
...
con.commit();
}
catch (SQLException e){
con.rollback();
throw e;
}
finally{
if (prep != null)
prep.close();
if (con != null)
con.close();
}
使用Java 7,您可以:
try(Connection con = getConnection(); PreparedStatement prep = con.prepareConnection("Update ..."){
...
con.commit();
}
这将关闭Connection
和PreparedStatement
,但是回滚又如何呢?我无法添加包含回滚的catch子句,因为该连接仅在try块内可用。
您是否还在try块之外定义连接?这里的最佳实践是什么,特别是如果使用连接池?
try(Connection con = getConnection()) {
try (PreparedStatement prep = con.prepareConnection("Update ...")) {
//prep.doSomething();
//...
//etc
con.commit();
} catch (SQLException e) {
//any other actions necessary on failure
con.rollback();
//consider a re-throw, throwing a wrapping exception, etc
}
}
根据oracle文档,您可以将try-
with-resources块与常规try块结合使用。IMO,以上示例捕获了正确的逻辑,即:
在Java 6及更早版本中,我将使用三重嵌套的try块集(外部try-finally,中间try-catch,内部try-
finally)来完成此操作。ARM语法确实使这个麻烦。
本文向大家介绍Java使用 try-with-resources 实现自动关闭资源的方法,包括了Java使用 try-with-resources 实现自动关闭资源的方法的使用技巧和注意事项,需要的朋友参考一下 1、 在Java1.7之前,我们需要通过下面这种方法, 在finally中释放资源,这种方法有点繁琐。 2、在java1.7之后,可以使用try-with-resources实现自动关闭资
当只使用一个资源时,Java7 try-with-resources语法(也称为ARM块(自动资源管理))是很好的、简短的和直接的。但是,当我需要声明多个相互依赖的资源时,我不确定什么是正确的习惯用法,例如和包装它的。当然,这个问题涉及包装某些资源的任何情况,而不仅仅是这两个特定的类。 我想出了以下三种选择: 这个很好,很短,但是坏了。因为底层的不是在变量中声明的,所以它永远不会在生成的块中直接关
在此Java程序示例中: 当在静态方法example()的正文中抛出OutOfMemoryError错误时,在终止静态方法example()之前,连接“con”和语句“stmt”是否会自动关闭,尽管没有任何“cat”捕获这些错误,因此在main()的其余代码中,是否确定这两个对象已关闭? 谢谢
问题内容: 使用try-with-resources语句关闭资源时,是否可以忽略抛出的异常? 例: 还是应该继续关闭? 问题答案: 我在钱币开发邮件列表中找到了这个答案:http : //mail.openjdk.java.net/pipermail/coin- dev/2009-April/001503.html 5. close方法的某些失败可以安全地忽略(例如,关闭已打开以供读取的文件)。
try-with-resources语句是一个try语句,其中包含一个或多个正式声明的资源。 这里资源是一个对象,一旦不再需要就应该关闭它。 try-with-resources语句确保在需求完成后关闭每个资源。 任何实现java.lang.AutoCloseable或java.io.Closeable的对象,接口都可以用作资源。 在Java 9之前,资源将在try之前或try语句内部声明,如下面
主要内容:Java SE 7:Try-With-Resources基础知识,Java SE 7:Try-With-Resources规则,Java SE 9:Try-With-Resources改进在这篇文章中,我们将讨论Java SE 9中的一些改进语句。现在让我们开始学习这个构造。 Java SE 7:Try-With-Resources基础知识 Java SE 7引入了一个新的构造: 语句,用于更好的异常处理。 如果没有这个构造,开发人员必须编写大量冗余和难看的代码。 如果开发人员忘记正确