【发布时间】:2017-02-17 17:52:03
【问题描述】:
我正在研究我的 DAO,但不知道处理异常的最佳方法是什么。使用 .persist() 时可以发出 3 个异常:EntityExistsException / IllegalArgumentException / TransactionRequiredException。
我只是想知道捕获和抛出异常的最佳方法是什么(我想在更高级别上处理它)。
我应该捕获并抛出一个简单的异常还是单独捕获上述异常更有效?
第一种方法,我只是捕获异常并抛出它:
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。 -
这是为什么呢?未处理的异常可能会造成一些混乱,或者我在这一点上完全错了?
-
因为,正如您的问题所说,您应该在更高级别上处理它们。
标签: java hibernate exception entitymanager