방법은 checked exception 때문에 흐름이나 자원을 정리하는 데 실패할 수 있습니다

2135 단어 Sonarfindbugs
방법은 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.
 
리소스 라이브러리: findbugs 키워드: ODR_OPEN_DATABASE_RESOURCE
 
 
해결 방법:
/**
	 *  
	 * @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);
					}
				}
			}
		}
	}

 

좋은 웹페이지 즐겨찾기