我正在处理我的DAO,无法弄清楚处理异常的最佳方法。使用.persist()时,可以发出3个异常: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
因为,正如你的问题所说,你应该*在更高的层面上处理它们*。 –