【发布时间】:2011-08-23 19:28:17
【问题描述】:
我和一位同事在处理事务 JDBC 代码引发的运行时异常的最佳实践方面存在分歧。他认为捕捉Exception 而不是SQLException 是正确的做法。
他的论点是Connection.close(); 在事务尚未提交的情况下具有未定义的行为。一些 JDBC 实现可能会进行回滚,而另一些可能会进行提交。如果您只是捕获SQLException,那么任何运行时异常都会在finally 块中的close() 上具有未定义的行为。
目前是否认为捕获Exception 是最佳做法,如果不是,您如何解决他描述的情况?
Connection connection = null;
try {
connection = ...
// transactional code
} catch (final Exception e) {
connection.rollback();
} finally {
// close other resources
if (connection != null) { connection.close(); }
}
【问题讨论】:
标签: exception jdbc transactions