Страницы

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

четверг, 23 мая 2019 г.

блоки 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"); }


Ответ

Возможно, так:
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, неудачи собираем. Потом выбрасываем общее для всех ошибок исключение.

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

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