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