处理 jdbc 连接时尝试/捕获的最佳方法

Posted

技术标签:

【中文标题】处理 jdbc 连接时尝试/捕获的最佳方法【英文标题】:Best approach for try/catch while dealing with jdbc connection 【发布时间】:2014-03-18 23:43:30 【问题描述】:

我试图找出在处理 JDBC 中的连接时使用 try/catch 的最佳方法是什么。

我个人的看法是。

Connection conn = null;
try
    conn = getDBConnection(); 
    //Some jdbc code
 catch(SQLException e) 
    //...
 finally 
    if(conn != null) 
        try 
            conn.close();
         catch(SQLException e) 
            //....
        
    

但我见过很少有聪明人这样做

Connection conn = null;
try
    conn = getDBConnection(); 
    //Some jdbc code
    conn.close();
    conn = null;
 catch(SQLException e) 
    //...
 finally 
    if(conn != null) 
        try 
            conn.close();
         catch(SQLException e) 
            //....
        
    

在try中关闭连接并将其设置为null有什么好处吗?

【问题讨论】:

您的方法更好,另外,如果您使用的是 java 7,请参阅我在 try-catch here 上的回答 morgano 感谢您指出这一点我知道 Java 7 的酷特性但是我们仍在使用 JDK6 【参考方案1】:

你的聪明人没那么聪明。你的方法是要走的路。在finally 块中只关闭一次连接,没有理由将连接设置为null,这就是自动垃圾回收的用途。

【讨论】:

我认为聪明人担心的是,如果他们不将conn 设置为null,由于连接已经关闭,finally 中的条件检查可能会成功导致异常。谢谢!!

以上是关于处理 jdbc 连接时尝试/捕获的最佳方法的主要内容,如果未能解决你的问题,请参考以下文章

使用 Spring 和 DBCP 处理 JDBC 连接的正确方法是啥?

在 Tomcat7 中使用 JDBC 连接池进行事务处理

jdbc如何在嵌套查询中处理连接的关闭问题

springboot数据库掉线,捕获到的异常是哪个

Spring JDBC 连接池最佳实践

jdbc数据库连接在方法中,而且要返回statement 或resultset 在方法里关闭连接会怎么样?要怎么处理?