首頁 後端開發 C#.Net教程 .net的錯誤處理機制是什麼

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

Apr 26, 2019 pm 01:35 PM
.net 錯誤處理機制

.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中文網其他相關文章!

本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn

熱AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool

Undress AI Tool

免費脫衣圖片

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強大的PHP整合開發環境

Dreamweaver CS6

Dreamweaver CS6

視覺化網頁開發工具

SublimeText3 Mac版

SublimeText3 Mac版

神級程式碼編輯軟體(SublimeText3)

分享幾個.NET開源的AI和LLM相關專案框架 分享幾個.NET開源的AI和LLM相關專案框架 May 06, 2024 pm 04:43 PM

當今人工智慧(AI)技術的發展如火如荼,它們在各個領域都展現了巨大的潛力和影響力。今天大姚給大家分享4個.NET開源的AI模型LLM相關的專案框架,希望能為大家提供一些參考。 https://github.com/YSGStudyHards/DotNetGuide/blob/main/docs/DotNet/DotNetProjectPicks.mdSemanticKernelSemanticKernel是一種開源的軟體開發工具包(SDK),旨在將大型語言模型(LLM)如OpenAI、Azure

C#的就業前景如何 C#的就業前景如何 Oct 19, 2023 am 11:02 AM

無論您是初學者還是有經驗的專業人士,掌握C#將為您的職業發展鋪平道路。

PHP8.0中新的錯誤處理機制:throwable介面 PHP8.0中新的錯誤處理機制:throwable介面 May 14, 2023 am 08:21 AM

PHP8.0中,一個非常重要的更新就是錯誤處理機制的改進,它引進了一個新的介面-throwable。此介麵包括Error和Exception兩種異常類型,使開發者無需區分符合可捕獲異常規範的錯誤和異常。下面,我們將詳細介紹throwable介面。什麼是throwable?throwable是PHP8.0引入的一種新的接口,包括了Error和Excepti

面向開發人員的.NET效能最佳化技術 面向開發人員的.NET效能最佳化技術 Sep 12, 2023 am 10:43 AM

如果你是.NET開發者,你必須意識到在交付高品質軟體方面,優化功能和效能的重要性。透過熟練使用提供的資源並減少網站載入時間,你不僅為使用者創造了愉快的體驗,還能減少基礎設施成本。

Java框架與.NET框架的效能差異 Java框架與.NET框架的效能差異 Jun 03, 2024 am 09:19 AM

在高並發請求處理方面,.NETASP.NETCoreWebAPI效能優於JavaSpringMVC,原因包括:AOT提前編譯,減少啟動時間;更精細的記憶體管理,由開發人員負責分配和釋放物件記憶體。

C#.NET面試問題和答案:提高您的專業知識 C#.NET面試問題和答案:提高您的專業知識 Apr 07, 2025 am 12:01 AM

C#.NET面試問題和答案包括基礎知識、核心概念和高級用法。 1)基礎知識:C#是微軟開發的面向對象語言,主要用於.NET框架。 2)核心概念:委託和事件允許動態綁定方法,LINQ提供強大查詢功能。 3)高級用法:異步編程提高響應性,表達式樹用於動態代碼構建。

C#.NET:探索核心概念和編程基礎知識 C#.NET:探索核心概念和編程基礎知識 Apr 10, 2025 am 09:32 AM

C#是一種現代、面向對象的編程語言,由微軟開發並作為.NET框架的一部分。 1.C#支持面向對象編程(OOP),包括封裝、繼承和多態。 2.C#中的異步編程通過async和await關鍵字實現,提高應用的響應性。 3.使用LINQ可以簡潔地處理數據集合。 4.常見錯誤包括空引用異常和索引超出範圍異常,調試技巧包括使用調試器和異常處理。 5.性能優化包括使用StringBuilder和避免不必要的裝箱和拆箱。

從網絡到桌面:C#.NET的多功能性 從網絡到桌面:C#.NET的多功能性 Apr 15, 2025 am 12:07 AM

C#.NETisversatileforbothwebanddesktopdevelopment.1)Forweb,useASP.NETfordynamicapplications.2)Fordesktop,employWindowsFormsorWPFforrichinterfaces.3)UseXamarinforcross-platformdevelopment,enablingcodesharingacrossWindows,macOS,Linux,andmobiledevices.

See all articles