java – 如果抛出异常,确保关闭对象
发布时间:2020-09-05 04:23:29 所属栏目:Java 来源:互联网
导读:我正在创建JDBC语句和ResultSet. Findbugs正确地指出,如果抛出异常,我不会关闭它们. 所以现在我有: Statement stmt = null;ResultSet res = null;try { stmt = ... res = stmt.executeQuery(...); ...} finally { try { i
我正在创建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子句. (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |