Страницы

Поиск по вопросам

суббота, 7 марта 2020 г.

блоки try-catch. Обработка исключений

#java #исключения #try_catch


правильно ли я понимаю, что если первое закрытие выбросит ошибку, то остальные даже
и не вызовутся? подскажите как ПРАВИЛЬНО исправить, а главное почему именно так!

private void closeStatement() throws DaoException, SQLException {
    try {
        getByIdStmt.close();
    } catch (Exception e) {
        throw new DaoException("Error! getByIdStmt is not closed");
    }
    try {
        updateStmt.close();
    } catch (Exception e) {
        throw new DaoException("Error! updateStmt is not closed");
    }
    try {
        addStmt.close();
    } catch (Exception e) {
        throw new DaoException("Error! addStmt is not closed");
    }
    try {
        deleteStmt.close();
    } catch (Exception e) {
        throw new DaoException("Error! deleteStmt is not closed");
    }
    System.out.println("Statement close");
}

    


Ответы

Ответ 1



Возможно, так: private void closeStatement() throws DaoException, SQLException { ArrayList err = new ArrayList(); try { getByIdStmt.close(); } catch (Exception e) { err.add("getByIdStmt"); } try { updateStmt.close(); } catch (Exception e) { err.add("updateStmt"); } try { addStmt.close(); } catch (Exception e) { err.add("addStmt"); } try { deleteStmt.close(); } catch (Exception e) { err.add("deleteStmt"); } if (!err.isEmpty()) { throw new DaoException("Error! "+String.join(", ", err)+" not closed"); } System.out.println("Statement close"); } Поочерёдно пытаемся закрыть все statement, неудачи собираем. Потом выбрасываем общее для всех ошибок исключение.

Комментариев нет:

Отправить комментарий