中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

.net錯誤處理機制的用法

發布時間:2020-10-14 15:54:20 來源:億速云 閱讀:131 作者:小新 欄目:編程語言

小編給大家分享一下.net錯誤處理機制的用法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

 .NET提供了四種錯誤處理機制,它們有一定的優先級順序:Page_Error事件>ErrorPage屬性>Application_Error事件> <customErrors>配置項。

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屬性能夠發揮作用,<customErrors>配置項中的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.<customErrors>配置項

配置文件web.config中的<customErrors> 配置節,可將重定向頁指定為默認的錯誤頁defaultRedirect或者根據引發的 HTTP 錯誤代碼指定特定頁。如果發生在應用程序以前的任一級別都未捕獲到的錯誤,則顯示這個自定義頁。

<customErrors mode="On" defaultRedirect="~/ErrorHandling/ApplicationError.html"> <error statusCode="404" redirect="~/ErrorHandling/404.html" /> </customErrors>

同樣,如果Application_Error和<customerErrors>同時存在,也存在執行順序的問題。因為優先級Application_Error事件> <customErrors>配置項,所以發生應用程序級錯誤時,優先執行Application_Error事件中的代碼,如果Application_Error事件中調用了Server.ClearError()函數,<customerErrors>配置節中的defaultRedirect不起作用,因為Exception已經被清除;如果Application_Error事件中沒用調用了Server.ClearError()函數,錯誤頁會重新定位到defaultRedict指定的URL頁面,為用戶顯示友好出錯信息。

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

1.從功能上分類:用于異常處理(Handling exceptions)是Page_Error事件和Application_Error事件;用戶錯誤頁面重定向(Redirecting the user to an error page)的是 ErrorPage屬性 和 <customErrors>配置項。

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

以上是.net錯誤處理機制的用法的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

ne
AI

中阳县| 吉安市| 镶黄旗| 景谷| 韩城市| 潞西市| 和田县| 弥渡县| 黑水县| 石狮市| 博野县| 赤水市| 黎城县| 阳西县| 南皮县| 儋州市| 航空| 靖江市| 平凉市| 阿荣旗| 临清市| 夏津县| 小金县| 九寨沟县| 冀州市| 乌拉特后旗| 毕节市| 马龙县| 从江县| 耒阳市| 宁津县| 禹州市| 东港市| 台湾省| 古蔺县| 高要市| 铜鼓县| 沙湾县| 七台河市| 清河县| 酉阳|