java – 如果抛出异常,确保关闭对象
发布时间:2020-12-14 16:23:41 所属栏目:Java 来源:网络整理
导读:我正在创建JDBC语句和ResultSet. Findbugs正确地指出,如果抛出异常,我不会关闭它们. 所以现在我有: Statement stmt = null;ResultSet res = null;try { stmt = ... res = stmt.executeQuery(...); ...} finally { try { if(res != null) res.close(); // --
我正在创建JDBC语句和ResultSet.
Findbugs正确地指出,如果抛出异常,我不会关闭它们. 所以现在我有: 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(); } } (只有我有更多的结果集和准备好的陈述等等……所以我的最后一个嵌套是相当深的) 必须有更好的方法来确保关闭大量结果集? (旁白:在Symbian中,他们永远不会让析构函数/ close / release / remove -type方法抛出任何错误.我认为这是一个非常好的设计决策.在我看来,JDBC中所有关闭的方法都会抛出SQLException会使事情变得不必要地复杂化. ) 解决方法
如果您使用的是Java 7,则可以利用
ResultSet 扩展
AutoCloseable 的事实并使用
try-with-resources语句.
try (Statement sql = <WHATEVER>; ResultsSet res = sql.executeQuery(<WHATEVER>)) { // Use results } 至少那你避免了finally子句. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |