我正在捕獲DAO類中的泛型異常並將其包裝爲DaoException。這樣做的主要原因是,EBean在保存失敗的情況下拋出不同的運行時異常,我不想將它們傳播到上層。上層應該只知道保存是否成功。在DAO層捕獲泛型異常是一種不好的做法嗎?
以下是代碼片段。
public void save(Object object) throws DaoException {
try {
Ebean.save(object);
} catch (Exception e) {
throw new DaoException("Error saving record", e);
}
}
這違背了一般的概念,即泛型異常不應該被捕獲。
但是,在這種情況下這是可以接受的,或者仍然是一個不好的做法?
還有幾件事要添加到我的問題。 我確切的要求是
有設置,我需要在交易與堅持獨立的對象。 (需要這樣做的交易,以避免在同一時間其他情況下進行更改到同一對象)
如果一個對象未能persits由於一些錯誤,還是其他物體需要堅持。 (Cz他們是獨立的)
我在做的服務層是循環的對象集。如果我從一個對象中收到一個DaoException,我將它添加到錯誤響應中並繼續循環。但它不應該打破交易。 有沒有更好的方法來滿足這個要求?
爲什麼save函數會拋出不同的類型? –
可能重複的https://stackoverflow.com/questions/21938/is-it-really-that-bad-to-catch-a-general-exception?rq=1 – scottb