gpt4 book ai didi

java - 我应该捕获关闭 java.sql.Connection 时抛出的异常吗

转载 作者:太空狗 更新时间:2023-10-29 23:01:00 26 4
gpt4 key购买 nike

Connection.close() 可能会抛出 SqlException,但我一直认为忽略任何此类异常是安全的(而且我从未见过不这样做的代码别理他们)。

通常我会写:

 try{
connection.close();
}catch(Exception e) {}

或者

 try{
connection.close();
}catch(Exception e) {
logger.log(e.getMessage(), e);
}

问题是:

  1. 这是不好的做法吗(有人在忽略此类异常(exception)时遇到过问题)。
  2. Connection.close() 抛出异常时。
  3. 如果它不好,我应该如何处理异常。

评论:

我知道丢弃异常是有害的,但我仅指关闭连接时抛出的异常(正如我所见,这在这种情况下很常见)。

有谁知道什么时候 Connection.close() 会抛出任何东西?

最佳答案

实际上,您所做的(几乎)是最佳实践 :-) 这是我在 Spring 的 JdbcUtils.java 中看到的内容。所以,你可能想添加另一个 Catch block 。

/**
* Close the given ResultSet and ignore any thrown exception.
* This is useful for typical finally blocks in manual code.
* @param resultSet the ResultSet to close
* @see javax.resource.cci.ResultSet#close()
*/
private void closeResultSet(ResultSet resultSet) {
if (resultSet != null) {
try {
resultSet.close();
}
catch (SQLException ex) {
logger.debug("Could not close ResultSet", ex);
}
catch (Throwable ex) {
// We don't trust the driver: It might throw RuntimeException or Error.
logger.debug("Unexpected exception on closing ResultSet", ex);
}
}
}

关于java - 我应该捕获关闭 java.sql.Connection 时抛出的异常吗,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/248149/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com