2011-03-24 69 views
1

我有一個n層web應用程序,我想捕獲來自DAL(數據訪問層)的每個方法中的特定類型的異常,並將其重新拋出爲新的異常一個特定的類型。從DAL捕獲每個異常與另一個異常

我的DAL有很多方法,所以我不想開始用try/catch來包裝每一個。

我認爲這是可能的使用異常處理應用程序塊,但我找不到任何良好的文檔如何做到這一點...
我不熟悉以前版本的應用程序塊。

+1

你不想捕捉*每個*可能的例外。你不想打包那些應該是不可捕捉的異常(在4.0中實際上是不可捕捉的,yupee!),就像那些用於內存不足,A/V和東西的異常;而且你也不想包裝那些表示錯誤的異常,並且不應該像生成引用null的參數那樣拋出,除以零和錯誤的參數。 – 2011-03-24 11:07:12

+1

只是不這樣做,它會產生比解決問題更多的問題 – jeroenh 2011-03-24 11:15:06

+0

好的,我編輯了我的問題以捕捉特定類型的異常。這可能很適合捕捉一系列不同的異常,並將它們包裝爲DalException persay ... – gillyb 2011-03-24 12:00:45

回答

1

您的DAL存儲庫是否有接口? 我會使用裝飾器模式實現接口。 所有的裝飾器都會捕獲異常,然後生成新的異常並將其拋出到上層

作爲一個需要注意的問題,在我們的n層應用程序中,我們總是讓異常自然拋出並捕獲它們一次一個地方並記錄下來。如果我們確實需要這樣做,那麼我們只會創建特定的例外情況,而且這種情況很少。

原因是代碼的可維護性。當任何地方都存在try/catch時,代碼很容易變得不可讀。

+0

+1不應該這樣做; -1提供了一種方法來實現它;-) – jeroenh 2011-03-24 11:14:37