如果我有一個自定義的runtimeexception從數據訪問層拋出 - 是否可以捕獲和「處理」它只在上層(所以,忽略它在幾個層)?如何處理從數據訪問層拋出的自定義runtimeexception
後來編輯:我有一個dao的方法在成千上萬的地方使用和樹繼續和... 一個解決方案,這將影響只是我感興趣的流是拋出rte和治療它只在上層。對我沒有副作用,但'這是正確的'?
如果我有一個自定義的runtimeexception從數據訪問層拋出 - 是否可以捕獲和「處理」它只在上層(所以,忽略它在幾個層)?如何處理從數據訪問層拋出的自定義runtimeexception
後來編輯:我有一個dao的方法在成千上萬的地方使用和樹繼續和... 一個解決方案,這將影響只是我感興趣的流是拋出rte和治療它只在上層。對我沒有副作用,但'這是正確的'?
這取決於您定義的合同。大多數設計趨向於逐層移動,而不是在層間跳轉(跳過層)。它包括具有定義的圖層模型:
的這種規則的一個例子可能看起來像可實現(層之間返回的東西但我建議保留禁止跳過層:
這是一個最好/無害的實踐問答...... :) – Roxana
是的,沒關係。一個很好的規則是:抓住例外時,你可以做一些聰明的事情,否則讓它上升。
讓我們說層1拋出一個異常。可能發生的情況是,您無法在第2層但在第3層中執行「智能」操作。這取決於您的設計。
這是一個好的或不好的設計的事實是開放的討論。我的觀點是,這是一個'宗教'問題,而不是'技術'問題。
無論您決定如何,我建議您將它記錄在javadoc和/或方法聲明的「throws」子句中。在你穿過的每一層都做。
我可以通過看
Custom run-time-exception thrown from a data access layer
un-checked-exception
?Checked exception
例如的SQLException。
CheckedExceptions
是爲了妥善處理。請分析你與它進行之前忽略的異常的影響。
這個問題的答案應該可以幫助你:http://stackoverflow.com/questions/12923302/good-practices-for-java-exceptions-handling – sebastiencol