2013-07-30 87 views
0

如果我有一個自定義的runtimeexception從數據訪問層拋出 - 是否可以捕獲和「處理」它只在上層(所以,忽略它在幾個層)?如何處理從數據訪問層拋出的自定義runtimeexception

後來編輯:我有一個dao的方法在成千上萬的地方使用和樹繼續和... 一個解決方案,這將影響只是我感興趣的流是拋出rte和治療它只在上層。對我沒有副作用,但'這是正確的'?

+1

這個問題的答案應該可以幫助你:http://stackoverflow.com/questions/12923302/good-practices-for-java-exceptions-handling – sebastiencol

回答

0

這取決於您定義的合同。大多數設計趨向於逐層移動,而不是在層間跳轉(跳過層)。它包括具有定義的圖層模型:

  • 圖層和它們包含的邏輯類型。
    • 類型的功能或責任。
  • 圖層的層次級別。
  • 圖層之間的通信規則。
  • 質量目標導致這種分層模型
    • 以及它們如何與這些層和規則

的這種規則的一個例子可能看起來像可實現(層之間返回的東西但我建議保留禁止跳過層:

​​

+0

這是一個最好/無害的實踐問答...... :) – Roxana

1

是的,沒關係。一個很好的規則是:抓住例外時,你可以做一些聰明的事情,否則讓它上升

讓我們說層1拋出一個異常。可能發生的情況是,您無法在第2層但在第3層中執行「智能」操作。這取決於您的設計。

這是一個好的或不好的設計的事實是開放的討論。我的觀點是,這是一個'宗教'問題,而不是'技術'問題。

無論您決定如何,我建議您將它記錄在javadoc和/或方法聲明的「throws」子句中。在你穿過的每一層都做。

1

我可以通過看

Custom run-time-exception thrown from a data access layer

  • 給予一定的指點由於它是從數據訪問層來了,這是非常重要的,瞭解什麼是根源。
  • 由於它是運行時異常,我們可以安全地假設它的根本原因始終是un-checked-exception
  • 如果是,那麼你可以考慮在登錄後跳過它。
  • 如果否,則根情況可以是任何Checked exception例如的SQLException。
    • 我們知道CheckedExceptions是爲了妥善處理。
    • 此外,您需要檢查數據訪問層開發人員,爲什麼選中的異常未經檢查,然後拋出。

請分析你與它進行之前忽略的異常的影響。

相關問題