写一个
SQLUtils类,其中包含
static closeQuietly捕获和记录此类异常的方法,然后根据需要使用。
您最终会看到如下内容:
public class SQLUtils { private static Log log = LogFactory.getLog(SQLUtils.class); public static void closeQuietly(Connection connection) { try { if (connection != null) { connection.close(); } } catch (SQLExcetpion e) { log.error("An error occurred closing connection.", e); } } public static void closeQuietly(Statement statement) { try { if (statement!= null) { statement.close(); } } catch (SQLExcetpion e) { log.error("An error occurred closing statement.", e); } } public static void closeQuietly(ResultSet resultSet) { try { if (resultSet!= null) { resultSet.close(); } } catch (SQLExcetpion e) { log.error("An error occurred closing result set.", e); } }}您的客户端代码将类似于:
Connection connection = null;Statement statement = null;ResultSet resultSet = null;try { connection = getConnection(); statement = connection.prepareStatement(...); resultSet = statement.executeQuery(); ...}finally{ SQLUtils.closeQuietly(resultSet); SQLUtils.closeQuietly(statment); SQLUtils.closeQuietly(connection);}更新: 自Java
7开始,各种JDBC接口都得到了扩展
java.lang.AutoCloseable,而以上代码回答了原始问题,如果您直接针对JDBC
API编写代码,则现在可以对其进行结构化:
try ( Connection connection = getConnection(); PreparedStatement statement = connection.prepareStatement(...); ResultSet resultSet = statement.executeQuery()){ ...}


