Asp.Net自定義錯誤頁心得介紹

Asp.Net自定義錯誤頁心得介紹 web

拋開Try Catch 不說(這種地球人都知道),ASP.NET提供了四種錯誤處理機制,分別爲:Page_Error, ErrorPage,Application_Error,<customErrors>四種,若是加上Try Catch就算五種吧,能夠理解爲:一種局部變量---Try Catch ,兩種頁面級變量:Page_Error, ErrorPage,兩個全局變量:Application_Error,customErrors,在這裏提早說一下他們的執行順序,從高到低排序:Page_Error > ErrorPage > Application_Error > <customErrors>下面將會按照這四種執行的高低順序作一下詳細的使用介紹。

首先:Page_Error 你們一看這個詞語,估計大致上就明白了什麼意思了,就是頁面級處理程序,A頁面出錯了,A的Page_Error處理A的錯誤,B頁面出錯了,B的Page_Error處理B的錯誤,你們能夠喝try catch同樣理解,只是這個比try catch範圍大了一些,一個方法裏面有try catch,這個方法出錯了,就在catch中處理,一個頁面出錯了,就在Page_Error中處理。

使用方法:在頁面裏面加入此方法便可

protected void Page_Load(object sender, EventArgs e)

{

//錯誤後的操做如:寫日誌,給用戶輸出本身指望的錯誤信息

}

優勢:處理比較靈活,對於常常出錯的頁面,直接添加就能夠了。

缺點:他屬於頁面級變量,更多的時候,咱們不知道那些頁面會出錯,因此若是使用這種處理方法,須要每一個頁面都寫,比較麻煩
第二:ErrorPage 其實ErrorPage 和Page_Error很是相似,你們能夠看作是前臺js處理,也是頁面級處理程序,可是在這裏不推薦使用,多是由於習慣問題,我的感受ASP.NET比asp最方面的地方就是代碼後置,既然這樣,爲何能寫在後臺的東西,非要寫在前臺呢?呵呵,固然,這個也屬於我的習慣,不少東西,必須寫在前臺,那是沒辦法的事情,好了扯遠了,下面看一下他的用法

使用方法:在頁面裏面加入此方法便可

<script language=「C#」 runat=「server」>

protected void Page_Load(object sender, EventArgs e)

{

this.ErrorPage = 「ErrorPage.htm」;

}

</script>

優勢: 請參考Page_Error

缺點: 請參考Page_Error

第三: Application_Error 看到Application_Error,熟悉ASP.NET的人一眼就知道,它屬於Global.asax中的全局變量,沒錯,它就是一個全局處理機制,咱們不只要問,Application_Error和customErrors都是全局變量,他們有什麼不一致呢?機理上的不一致在這裏就不說了,主要說一下用法上的不同,customErrors只能讓你跳到到你想要的頁面,不能記錄錯誤信息,它會自動處理掉,Application_Error能夠接收和處理這些錯誤信息

使用方法:在Global.asax中處理,Application_Error方法Global會自動就生成了

protected void Application_Error(object sender, EventArgs e)

{

Exception ex = this.Context.Server.GetLastError();

if (ex!=null)

{

this.Context.Server.Transfer(「/Error.aspx」);

//能夠再這裏寫日誌,也能夠再Error寫日誌,而且展現給用戶一個友好的界面

this.Context.Response.Clear();

}

}

優勢:全局變量,在這裏寫一次,全部的頁面出錯了,都會自動跳轉到錯誤頁面,省時省力,而且能夠記錄相關錯誤

缺點:全局變量的肯定你們都明白的,須要消耗一部分的性能

第四: customErrors 其實customErrors就是Web.config的一個配置項,在這裏配置之後,頁面出錯後,會自動跳轉到相應的錯誤頁面,這種相信你們都用過很是頻繁了。在這裏就簡單介紹一下了

使用方法:

<system.web>

<customErrors mode=「On」 defaultRedirect=「GenericErrorPage.htm」>

<error statusCode=「403」 redirect=「Error403.htm」 />

<error statusCode=「404」 redirect=「Error404.htm」 />

</customErrors>

</system.web>

優勢:對於那些頁面鏈接不存在,或者程序出錯,給用戶以友好的提示,這個用的是不少的

缺點:無法記錄具體錯誤信息 性能

點擊原文連接查看及下載>> this

相關文章
相關標籤/搜索