1

我看着這個相當廣泛,我已經找到了以下內容:頂級異常處理

  1. 你可以做一些聰明的東西,通過實施基本捕捉最錯誤請參閱Andreas Knudsen的解決方案。
  2. 在用戶控件的錯誤事件永遠不會被解僱,詳情請參閱這裏:http://weblogs.asp.net/vga/archive/2003/06/16/8748.aspx

我無法找到是趕上回發事件發生的錯誤,如一個按鈕的點擊事件的任何一般的方式,在Web部件或用戶控制級別。通常我的意思是我可以在基類中實現的東西。

我知道我應該在代碼中做適當的嘗試/捕獲,但對於大型團隊,我想確保Web部件從不崩潰頁面,但始終顯示一個很好的消息,並允許執行繼續在頁面上的其他Web部件。

我不認爲這是可能的,但我會被證明是錯誤的。

感謝, 比約恩·

回答

0

認爲這是可能的,但你必須要解決的事實,當asp.net分配回發事件也可能不關心你的用戶控制定義,而是隻關心顯式實現IPostBackEventHandler的控件(如按鈕/下拉等)

對於頁面,您可以重寫和嘗試/捕獲RaisedPostBackEvent像其他方法一樣。 (如果你想要一個通用的頁面異常處理設置(如果你想這樣做,那麼請重新考慮)我在最後一個項目中花費了太多時間,基本上重新實現了默認的asp.net異常處理邏輯來實現它。惡魔的細節)

你可以做的是在你的系統中有一個基本頁面,所有的頁面都繼承自哪個頁面,並覆蓋RaisePostBackEvent(source,eventArgs)。在這個方法中,你可以看到源代碼是否繼承了你的異常處理基本控制,或者如果它包含在這樣做的控件中(導航父圖) 如果它包含一個,則圍繞對base.Raise ....的調用進行try/catch(請參閱代碼在 Transparent generic exception handling for asp.net/MOSS2007 (with code)),並在您找到的第一個候選人上調用異常發生的方法,如果確實有任何exc發生。

+0

感謝您的回答。這是一個有趣的想法,但不幸的是,我現在沒有時間去嘗試(項目壓力)。我會有一天,但它會很酷,如果它的工作。 – Bjoern 2010-09-16 12:01:21

+0

我會給你懷疑的好處:) – Bjoern 2010-09-16 12:01:46