#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 { ArrayListerr = 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, неудачи собираем. Потом выбрасываем общее для всех ошибок исключение.
Комментариев нет:
Отправить комментарий