Код IT
← Каталог

Рекомендации по разработке на Java — 6.4. Освобождение ресурсов

Фрагмент из «Рекомендации по разработке на Java»: 6.4. Освобождение ресурсов.

Java main.java
// Хорошо: try-with-resources
try (Connection connection = dataSource.getConnection();
     PreparedStatement statement = connection.prepareStatement(SQL)) {
    statement.setLong(1, userId);
    try (ResultSet resultSet = statement.executeQuery()) {
        while (resultSet.next()) {
            // обработка результата
        }
    }
} catch (SQLException e) {
    throw new DataAccessException("Failed to load user", e);
}

// Плохо: ресурсы могут не освободиться при возникновении исключения
Connection connection = null;
try {
    connection = dataSource.getConnection();
    // работа с соединением
} catch (SQLException e) {
    // обработка ошибки
} finally {
    if (connection != null) {
        try {
            connection.close(); // может выбросить исключение
        } catch (SQLException e) {
            logger.warn("Failed to close connection", e);
        }
    }
}
// Хорошо: try-with-resources
try (Connection connection = dataSource.getConnection();
     PreparedStatement statement = connection.prepareStatement(SQL)) {
    statement.setLong(1, userId);
    try (ResultSet resultSet = statement.executeQuery()) {
        while (resultSet.next()) {
            // обработка результата
        }
    }
} catch (SQLException e) {
    throw new DataAccessException("Failed to load user", e);
}

// Плохо: ресурсы могут не освободиться при возникновении исключения
Connection connection = null;
try {
    connection = dataSource.getConnection();
    // работа с соединением
} catch (SQLException e) {
    // обработка ошибки
} finally {
    if (connection != null) {
        try {
            connection.close(); // может выбросить исключение
        } catch (SQLException e) {
            logger.warn("Failed to close connection", e);
        }
    }
}