我正在创建JDBC Statement和ResultSets.
Findbugs正确地指出,close如果抛出异常,我不会这些.
所以现在我有:
Statement stmt = null;
ResultSet res = null;
try {
stmt = ...
res = stmt.executeQuery(...);
...
} finally {
try {
if(res != null)
res.close(); // <-- can throw SQLException
} finally {
if(stmt != null)
stmt.close();
}
}
Run Code Online (Sandbox Code Playgroud)
(只有我有更多的结果集和准备好的语句等等......所以我的finallys 嵌套更深)
必须有更好的方法来确保关闭大量结果集?
(旁白:在Symbian中,他们永远不会让析构函数/ close/release/remove -type方法抛出任何错误.我认为这是一个非常好的设计决策.在我看来close,JDBC中的所有方法都会SQLException使得事情变得不必要地复杂化.)
如果您使用的是 Java 7,那么您可以利用事实ResultSet扩展AutoCloseable并使用try-with-resources语句。
try (Statement sql = <WHATEVER>;
ResultsSet res = sql.executeQuery(<WHATEVER>)) {
// Use results
}
Run Code Online (Sandbox Code Playgroud)
至少这样你就可以避免这些finally条款。
| 归档时间: |
|
| 查看次数: |
111 次 |
| 最近记录: |