2009-05-21 126 views

回答

3

這取決於。

我是否讓異常冒泡?絕對。但我想要這個連接失敗,命令失敗。無論你做什麼,不要只隱藏這些,你需要了解它們。我更喜歡我的應用程序儘快失敗,以減少副作用和進一步損壞。

我也記錄異常。我使用Log4net來解決這個問題。但我喜歡在源代碼處記錄異常。我會讓他們從那裏冒出來。

返回null?如果找不到任何東西(即通過id查找某個東西並且它不在那裏),那麼我返回null,而不是一個例外。但有些情況下,我發現這種情況發生時會拋出新的異常。

要點:例外應該是「例外」,而不是規則。如果拋出異常,應該是因爲有些事情是錯誤的,你需要修復它。

+0

我認爲您的主要觀點非常有效。 +1 – 2009-05-21 20:16:56

0

我通常會讓異常泄漏,但如果我處於特別Enterprisey的情緒中,我會將它們包裝在RepositoryException中以防止客戶端關心底層存儲引擎。

我永遠不會返回false/null而不是異常,因爲這些值背後已經有了一個含義。在極少數情況下,你可能有一個大腦死亡的存儲引擎,它會在非例外情​​況下產生異常 - 我會捕獲那些具體的異常並在適當的情況下返回null(例如,如果行不存在,但是存儲引擎在這種情況下拋出一個錯誤 - 我會捕獲它並返回null)。

+0

是的,我和你一起只會發現與非例外情況有關的錯誤。我想到,如果我在存儲庫中捕獲異常並返回false,我所做的只是強迫自己記住將錯誤捕獲到存儲庫之外,最終在用戶體驗中最終會達到同樣的效果。 (假設我正在捕捉錯誤並優雅地失敗) – 2009-05-21 20:19:31