C# Page_Error事件
C#語(yǔ)言有很多值得學(xué)習(xí)的地方,這里我們主要介紹C# Page_Error事件,包括介紹ASP.NET 提供三種用于在出現(xiàn)錯(cuò)誤時(shí)捕獲和響應(yīng)錯(cuò)誤的主要方法等方面。
ASP.NET 在處理和響應(yīng)錯(cuò)誤的方式上進(jìn)行了若干改進(jìn)。在傳統(tǒng)的 ASP 中,是用"On Error Resume Next"(或在 Jscript 中用 try-catch 塊)處理錯(cuò)誤的。或者,如果您運(yùn)行的是 Microsoft Internet Information Services (IIS) 5.0,則使用 ASPError 對(duì)象創(chuàng)建自定義的錯(cuò)誤報(bào)告頁(yè)。然而,這些方法都有其局限性。
ASP.NET 提供了在運(yùn)行 ASP.NET 應(yīng)用程序時(shí)可能出現(xiàn)的錯(cuò)誤的若干處理和響應(yīng)級(jí)別。ASP.NET 提供三種用于在出現(xiàn)錯(cuò)誤時(shí)捕獲和響應(yīng)錯(cuò)誤的主要方法:C# Page_Error事件、application_error 事件以及應(yīng)用程序配置文件 (Web.config)。
本文演示如何在 ASP.NET 應(yīng)用程序中使用這些新功能。盡管本文由于與 ASP.NET 直接相關(guān)而介紹了如何提供自定義錯(cuò)誤頁(yè)和一般錯(cuò)誤報(bào)告,但是它并不介紹其他錯(cuò)誤處理方法,如 try-catch-finally 塊和公共語(yǔ)言運(yùn)行庫(kù) (CLR) 異常系統(tǒng)。
C# Page_Error事件提供一種捕獲在頁(yè)級(jí)別出現(xiàn)的錯(cuò)誤的方法。您可以只是顯示錯(cuò)誤信息(正如下面的示例代碼所示),也可以記錄事件或執(zhí)行某個(gè)其他操作。
備注:此示例在瀏覽器中顯示詳細(xì)的錯(cuò)誤信息,提供此示例只是為了進(jìn)行說(shuō)明。向應(yīng)用程序的最終用戶顯示詳細(xì)信息(尤其是該應(yīng)用程序在 Internet 上運(yùn)行時(shí))一定要小心。更適當(dāng)?shù)淖龇ㄊ窍蛴脩麸@示一條消息,告知已發(fā)生錯(cuò)誤,然后將具體的錯(cuò)誤詳細(xì)信息記錄在事件日志中。
此外,您還應(yīng)記下 @ Page 指令中的 inherits 屬性。如果已經(jīng)設(shè)置 inherits,則必須首先生成項(xiàng)目,然后再瀏覽到該頁(yè)。如果不首先生成項(xiàng)目,將看到下面的錯(cuò)誤信息:Project.PageEvent' is not a valid type
如何使用 Application_Error 事件
與 C# Page_Error事件相類似,您可使用 Application_Error 事件捕獲發(fā)生在應(yīng)用程序中的錯(cuò)誤。由于事件發(fā)生在整個(gè)應(yīng)用程序范圍內(nèi),因此您可記錄應(yīng)用程序的錯(cuò)誤信息或處理其他可能發(fā)生的應(yīng)用程序級(jí)別的錯(cuò)誤。
【編輯推薦】