我正在研究重新工作並簡化我在我支持的應用程序中的錯誤處理。目前,我們的所有頁面都是從我們創建的基類繼承而來的,而後者顯然繼承於System.Web.UI.Page。在這個基類中,OnError方法當前被覆蓋,然後調用MyBase.OnError,然後調用我們的自定義日誌記錄方法之一。何時重寫OnError?
我沒有看到覆蓋OnError方法的任何好處,我認爲最好讓Global.asax中的Application_Error方法負責處理未處理的異常(記錄它),然後處理customErrors部分該配置會觸發一個進程重定向用戶。
在網上尋找它看起來像人們經常重寫這種方法,但我沒有看到需要和來自MSDN的文章this讓我覺得一樣。
但同樣,爲什麼重寫onError方法?如果您需要在頁面上下文中處理信息,我理解您爲什麼要處理該上下文中的錯誤(記錄關於頁面的特定數據,用戶輸入,在屏幕上顯示消息等),但爲何忽略現有的OnError方法而不是使用Page_Error或Application_Error? – 2010-06-10 16:59:24
page_error來自onerror(Page_Load從OnLoad方法等調用),所以這就是爲什麼OnError;它與Page_Error相同...所以真正的問題是爲什麼頁面錯誤與應用程序錯誤... – 2010-06-10 19:50:44
通過上面提供的鏈接,「global.asax:Application_Error」部分上面的段落提到將代碼放入OnError Override方法與使用Page_Error不同。 所以,在你的情況下,我想你重寫了自己的重定向功能,所以它可能沒問題。就我而言,我們並不是真正覆蓋OnError方法中的任何功能,我們只是對引發的異常進行非常一般的記錄。我認爲我們可以將日誌記錄放在應用程序級別並刪除我們的OnError方法。感謝您的輸入。 – 2010-06-10 21:20:19