小編給大家分享一下.net錯(cuò)誤處理機(jī)制的用法,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
成都創(chuàng)新互聯(lián)主要從事成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)、網(wǎng)頁設(shè)計(jì)、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)平輿,十載網(wǎng)站建設(shè)經(jīng)驗(yàn),價(jià)格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):18982081108
.NET提供了四種錯(cuò)誤處理機(jī)制,它們有一定的優(yōu)先級順序:Page_Error事件>ErrorPage屬性>Application_Error事件>
1.Page_Error事件
Page_Error 事件提供一種捕獲在頁級別出現(xiàn)的錯(cuò)誤的方法。您可以只是顯示錯(cuò)誤信息(正如下面的示例代碼所示),也可以記錄事件或執(zhí)行某個(gè)其他操作。
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(); //同樣要注意這句代碼的使用 }
備注:此示例在瀏覽器中顯示詳細(xì)的錯(cuò)誤信息,提供此示例只是為了進(jìn)行說明。向應(yīng)用程序的最終用戶顯示詳細(xì)信息一定要小心。更適當(dāng)?shù)淖龇ㄊ窍蛴脩麸@示一條消息,告知已發(fā)生錯(cuò)誤,然后將具體的錯(cuò)誤詳細(xì)信息記錄在日志中。
2.ErrorPage屬性
你幾乎可以在頁面任何時(shí)候設(shè)置ErrorPage屬性,從而確定頁面發(fā)生錯(cuò)誤的時(shí)候會(huì)重定向至哪個(gè)頁面。要讓ErrorPage屬性能夠發(fā)揮作用,
this.ErrorPage = "~/ErrorHandling/PageError.html";
如果Page_Error和ErrorPage都存在,當(dāng)拋出Exception時(shí),頁面執(zhí)行順序是怎樣的呢?頁面會(huì)先執(zhí)行Page_Error事件處理函數(shù),如果Page_Error()事件中調(diào)用函數(shù)Server.ClearError()清除異常信息,則不會(huì)跳轉(zhuǎn)到ErrorPage屬性指定頁面;如果沒有調(diào)用Server.ClearError(),Exception信息會(huì)繼續(xù)向上拋,頁面會(huì)跳轉(zhuǎn)到ErrorPage指定頁面。這也就證明了優(yōu)先級順序:Page_Error事件>ErrorPage屬性。
3.Application_Error事件
與Page_Error 事件相類似,您可使用Application_Error事件捕獲發(fā)生在應(yīng)用程序中的錯(cuò)誤。由于事件發(fā)生在整個(gè)應(yīng)用程序范圍內(nèi),因此您可記錄應(yīng)用程序的錯(cuò)誤信息或處理其他可能發(fā)生的應(yīng)用程序級別的錯(cuò)誤。在Global.asax文件中添加如下代碼就OK了。
protected void Application_Error(object sender, EventArgs e) { Exception ex = Server.GetLastError().GetBaseException(); //實(shí)際應(yīng)用中這里可以將Exception信息記Log或是保存到數(shù)據(jù)庫中 //還可以將錯(cuò)誤發(fā)郵件給網(wǎng)站維護(hù)人員 Response.Write("Error:" + ex.Message); //清除Exception,避免繼續(xù)傳遞給上一級處理 //這里上級就是配置節(jié)了 Server.ClearError(); }
4.
配置文件web.config中的
同樣,如果Application_Error和
通過對.NET提供的以上四種錯(cuò)誤處理機(jī)制的分析,我們可以把它們從不同的角度分類,便于我們理解和使用。
1.從功能上分類:用于異常處理(Handling exceptions)是Page_Error事件和Application_Error事件;用戶錯(cuò)誤頁面重定向(Redirecting the user to an error page)的是 ErrorPage屬性 和
2.從錯(cuò)誤處理的范圍分類:用于頁面級(Page level)錯(cuò)誤處理的是Page_Error事件 和 ErrorPage屬性;用于應(yīng)用程序級(Application level)錯(cuò)誤處理的是Application_Error事件 和
以上是.net錯(cuò)誤處理機(jī)制的用法的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!