2011-01-27 31 views
1

在此尋找最佳實踐,並解釋說明。ASP.Net異常 - 在Global.asax中捕獲頁面或句柄(Application_Error)

應在ASP.Net應用程序捕獲的表示層和處理從業務層拋出的異常,或應這些被允許泡出來的,他們都可以被記錄,並在Global.ascx統一處理「 s Application_Error處理程序?

即..

protected void Application_Error(object sender, EventArgs e) 
    { 
     logExceptionDetails(Server.GetLastError()); 
     HttpContext.Current.Server.Transfer("~/Error.aspx");; 
    } 

感謝

回答

5

我對於異常的辦法是讓他們發生與Elmah記錄它們,並使用內置的Custom Error Page機制來通知我的用戶的東西出錯。

所有這些都可以使用零代碼完成(在web.config中配置)。

+2

ELMAH爲您提供額外的(銀河)功能,然後連接任意數量的消息接收器,如電子郵件,推特等,除了實際的日誌記錄之外。嚴重的是,花幾分鐘時間查看Elmah:http://code.google.com/p/elmah/ – 2011-01-27 20:18:59

0

好吧,如果你需要忠實地「處理」的例外,那麼你需要的try-catch在你的代碼塊,其中的例外可能發生。

您選擇的方法取決於您期望事件發生的頻率。如果事件真的非常特殊並且是錯誤的(例如意外的文件結束),那麼使用異常處理更好,因爲在正常情況下執行的代碼更少。如果事件經常發生,使用編程方法檢查錯誤更好。但是,如果您正在查看已被「未捕獲」的日誌記錄異常,那麼您應該使用像您所示的Global's Error事件。這是最佳實踐。事實上,如果您將它作爲HttpModule實現,那麼您的異常處理是非侵入式的,可以插入其他應用程序或通過簡單地更改web.config文件來刪除。

看看這篇文章4GuysFromRolla

http://www.4guysfromrolla.com/articles/081209-1.aspx

相關問題