.net的錯誤處理機制是什麼

藏色散人
發布: 2020-09-15 14:57:32
轉載
6967 人瀏覽過

.NET的錯誤處理機制是:1、【Page_Error】事件;2、ErrorPage屬性;3、【Application_Error】事件;4、【】設定項。以上四種處理機制主要用於異常處理和頁面層級錯誤處理。

.net的錯誤處理機制是什麼

.NET提供了四個錯誤處理機制:

1.Page_Error事件

Page_Error 事件提供一種捕捉在頁面層級出現的錯誤的方法。您可以只是顯示錯誤訊息(如下面的範例程式碼所示),也可以記錄事件或執行某個其他操作。

private void Page_Load(object sender, System.EventArgs e)
   { // Put user code to initialize the page here
        throw new Exception("Page Error!");
   }
protected void Page_Error(object sender, EventArgs e) 
   {
      Exception objErr = Server.GetLastError().GetBaseException();
    Response.Write("Error:" + objErr.Message);
       Server.ClearError(); //同样要注意这句代码的使用
  }
登入後複製

備註:此範例在瀏覽器中顯示詳細的錯誤訊息,提供此範例只是為了進行說明。向應用程式的最終用戶顯示詳細資訊一定要小心。更適當的做法是向使用者顯示一則訊息,告知已發生錯誤,然後將具體的錯誤詳細資料記錄在日誌中。

2.ErrorPage屬性

你幾乎可以在頁面任何時候設定ErrorPage屬性,從而確定頁面發生錯誤的時候會重定向到哪個頁面。要讓ErrorPage屬性能夠發揮作用,配置項中的mode屬性必須設為"On"。

this.ErrorPage = "~/ErrorHandling/PageError.html";
登入後複製

如果Page_Error和ErrorPage都存在,當拋出Exception時,頁面執行順序是怎樣的呢?頁面會先執行Page_Error事件處理函數,如果Page_Error()事件中呼叫函數Server.ClearError()清除異常訊息,則不會跳到ErrorPage屬性指定頁面;如果沒有呼叫Server.ClearError(),Exception資訊會繼續向上拋,頁面會跳到ErrorPage指定頁面。這也證明了優先順序:Page_Error事件>ErrorPage屬性。

3.Application_Error事件

與Page_Error 事件類似,您可以使用Application_Error事件擷取發生在應用程式中的錯誤。由於事件發生在整個應用程式範圍內,因此您可記錄應用程式的錯誤訊息或處理其他可能發生的應用程式層級的錯誤。在Global.asax檔案中加入如下程式碼就OK了。

protected void Application_Error(object sender, EventArgs e)
      {
         Exception ex = Server.GetLastError().GetBaseException();
         //实际应用中这里可以将Exception信息记Log或是保存到数据库中
         //还可以将错误发邮件给网站维护人员
          Response.Write("Error:" + ex.Message);
         //清除Exception,避免继续传递给上一级处理
         //这里上级就是<CustomerErrors>配置节了
          Server.ClearError(); 
     }
登入後複製

4.設定項

設定檔web.config中的 設定節,可將重定向頁指定為預設的錯誤頁defaultRedirect或根據引發的HTTP 錯誤代碼指定特定頁。如果發生在應用程式先前的任一層級都未捕獲的錯誤,則顯示此自訂頁面。

<customErrors mode="On" defaultRedirect="~/ErrorHandling/ApplicationError.html"> <error statusCode="404" redirect="~/ErrorHandling/404.html" /> </customErrors>
登入後複製

同樣,如果Application_Error和同時存在,也存在執行順序的問題。因為優先權Application_Error事件> 設定項,所以發生應用程式級錯誤時,優先執行Application_Error事件中的程式碼,如果Application_Error事件中呼叫了Server.ClearError()函數,的defaultRedirect不起作用,因為Exception已經被清除;如果Application_Error事件中沒用呼叫了Server.ClearError()函數,錯誤頁會重新定位到defaultRedict指定的URL頁面,為使用者顯示友善出錯訊息。

透過.NET提供的以上四種錯誤處理機制的分析,我們可以把它們從不同的角度分類,以便於我們理解和使用。

1.從功能上分類:用於異常處理(Handling exceptions)是Page_Error事件和Application_Error事件;使用者錯誤頁面重定向(Redirecting the user to an error page)的是ErrorPage屬性和

2.從錯誤處理的範圍分類:用於頁面層級(Page level)錯誤處理的是Page_Error事件和ErrorPage屬性;用於應用程式層級(Application level)錯誤處理的是Application_Error事件和< ;customErrors>配置項目。

以上是.net的錯誤處理機制是什麼的詳細內容。更多資訊請關注PHP中文網其他相關文章!

相關標籤:
來源:cnblogs.com
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!