我正在處理我的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
因爲,正如你的問題所說,你應該*在更高的層面上處理它們*。 –