方法可能因为checked exception导致清理流或资源失败
方法可能因为checked exception导致清理流或资源失败
资源库: findbugs 关键字: OBL_UNSATISFIED_OBLIGATION_EXCEPTION_EDGE
This method may fail to clean up (close, dispose of) a stream, database object, or other resource requiring an explicit cleanup operation.
In general, if a method opens a stream or other resource, the method should use a try/finally block to ensure that the stream or resource is cleaned up before the method returns.
This bug pattern is essentially the same as the OS_OPEN_STREAM and ODR_OPEN_DATABASE_RESOURCE bug patterns, but is based on a different (and hopefully better) static analysis technique. See Weimer and Necula, Finding and Preventing Run-Time Error Handling Mistakes, for a description of the analysis technique. .
问题类似于:
The method creates a database resource (such as a database connection or row set), does not assign it to any fields, pass it to other methods, or return it, and does not appear to close the object on all paths out of the method. Failure to close database resources on all paths out of a method may result in poor performance, and could cause the application to have problems communicating with the database.
解决办法:
/** * 关闭数据库资源方法 * @param con * @param ps * @param rs */ public static void closeResources (Connection con, PreparedStatement ps,ResultSet rs){ try { if (rs != null) { rs.close(); } } catch (SQLException e) { LOG.error("释放ResultSet出错", e); } finally { try { if (ps != null){ ps.close(); } } catch (SQLException e) { LOG.error("释放PreparedStatement出错", e); } finally { if (con != null) { try { con.close(); } catch (SQLException e) { LOG.error("释放Connection出错", e); } } } } }
下一篇: php连接sql失败