Я работаю над своим DAO и не могу понять, как лучше всего обрабатывать исключения. При использовании параметра .persist() есть три исключения, которые могут быть испущены: EntityExistsException/IllegalArgumentException/TransactionRequiredException.Обработка исключений JavaEE EntityManager
Мне просто интересно, что лучший способ поймать и выбросить исключение (я хочу обработать его на более высоком уровне).
Должен ли я поймать и бросить простое исключение, или более эффективно поймать вышеупомянутые исключения отдельно?
Первый метод, я просто поймать исключений и бросить его:
public void addAccount(final Account accountToAdd) throws AccountJpaException {
try {
em.persist(accountToAdd);
} catch (Exception e) {
throw new AccountJpaException(e);
}
}
}
Второй метод: я ловлю каждый из них по отдельности
public void addAccount(final Account accountToAdd) throws AccountJpaException, AccountExistsException {
try {
em.persist(accountToAdd);
} catch (EntityExistsException e) {
throw new AccountExistsException(e);
}catch(IllegalArgumentException e){
throw new AccountJpaException(e);
}catch(TransactionRequiredException e){
throw new AccountJpaException(e);
}
}
}
Спасибо за ваши советы!
Вы не должны действительно ловить кого-либо из них. Особенно не 'IllegalArgumentException' или' TransactionRequiredException'. – Kayaman
Почему? Необработанные исключения могут привести к некоторому беспорядку или я совершенно не прав в этом вопросе? – raik
Потому что, как говорится в вашем вопросе, вы должны * обрабатывать их на более высоком уровне *. –