成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

ASP.NET的錯誤處理機制

開發 后端
ASP.NET錯誤處理機制有幾種呢?如果同時采用了幾種錯誤處理機制,它們之間是否存在一定的優先級呢?本文將帶給你答案。

對于一個Web應用程序來說,出錯是在所難免的,因此我們應該未雨綢繆,為可能出現的錯誤提供恰當的處理。事實上,良好的錯誤處理機制正是衡量Web應用程序好壞的一個重要標準。試想一下,當用戶不小心在瀏覽器輸入了錯誤的URL或者當用戶提供了一些信息導致程序出錯的時候,如果我們沒有對這些情況進行處理,而是任由404或是500的錯誤頁面甚至出錯的堆棧信息呈現在用戶面前,這無疑會把一些用戶給嚇跑。所以,在我們開發Web應用程序的時候,應該對ASP.NET錯誤處理機制有充分的了解。

讓我們回到ASP.NET上來,先提兩個問題讓大家思考一下:ASP.NET錯誤處理機制有幾種呢?如果同時采用了幾種錯誤處理機制,它們之間是否存在一定的優先級呢?帶著這個問題,我們先來看一下我們最常見的Web.Config文件:

  1. <?xml version="1.0"?>  
  2. <configuration>  
  3.  <system.web>  
  4.   <customErrors mode="On" defaultRedirect="GenericErrorPage.htm">  
  5.     <error statusCode="403" redirect="Error403.htm" />  
  6.     <error statusCode="404" redirect="Error404.htm" />   
  7.   </customErrors>  
  8. </system.web>  
  9. </configuration> 

對于<customErrors>這個設置項,我想無需多言了,詳情可以參考MSDN的。第一種錯誤處理機制——使用Web.Config的<customErrors>配置項應該是大家最常用的。

接著,我們再看另外一個也很常用的文件:Global.asax。提到這個文件,大家想到了什么呢?對,就是跟兩大Web應用程序對象(Application、Session)相關的事件了。在這些事件當中,有一個屬于Application范疇的與錯誤相關的事件——Error,而對應的事件處理方法就是Application_Error了。顧名思義,這個事件處理方法在應用程序級別錯誤發生的時候就會被調用,因此你可以在這個方法中添加代碼來對錯誤進行處理,如下所示:

  1. protected void Application_Error(object sender, EventArgs e) {  
  2.  Exception objErr = Server.GetLastError().GetBaseException();  
  3.  Response.Write("Error:" + objErr.Message);  
  4.  Server.ClearError();  

在這里,大家要注意最后一句代碼Server.ClearError()的使用,為什么要使用這句代碼呢?如果不用又會怎樣呢?在這里我又先賣個關子。好了,第二種錯誤處理機制——使用Global.asax中的Application_Error事件處理方法也登臺亮相了。

以上這兩種錯誤處理方法都可以說是全局性的,一個源自應用程序配置文件,一個則是必須放在應用程序根目錄下的Global.asax文件的事件處理方法。與全局相對的就是局部,所以我們很自然的就會想:有沒有應用于局部——某個頁面的錯誤處理機制呢?答案是“有的”,而且還有兩種————使用ErrorPage屬性以及使用Page_Error事件處理方法。對于第一種機制,你幾乎可以在任何時候設置ErrorPage屬性,從而確定頁面發生錯誤的時候會重定向至哪個頁面;對于第二種機制而言,它與Application_Error事件處理方法是很類似的,只不過被觸發的時機不同而已。以下是具體的兩個例子:

  1. <script language="C#" runat="server">  
  2. protected void Page_Load(object sender, EventArgs e) {  
  3.  this.ErrorPage = "ErrorPage.htm";  
  4. }   
  5. </script>  
  6.  
  7. protected void Page_Error(object sender, EventArgs e) {  
  8.  Exception objErr = Server.GetLastError().GetBaseException();  
  9.  Response.Write("Error:" + objErr.Message);  
  10.  Server.ClearError(); //同樣要注意這句代碼的使用  
  11. }  

至此,四種ASP.NET錯誤處理機制已經悉數登場,是時候給它們排個名次了。從優先級高到低排序:Page_Error事件處理方法 > ErrorPage屬性 > Application_Error事件處理方法 > <customErrors>配置項。雖然排序是這樣,但是這個排序之間又有微妙的關系。首先,要讓ErrorPage屬性能夠發揮作用,<customErrors>配置項中的mode屬性必須設為"On";其次,雖然Page_Error事件處理方法排在最前面,但是,如果少掉了Server.ClearError()方法的話,仍然會引發優先級較低的錯誤處理,這種情況對于Application_Error事件處理方法也是如此。順序是排好了,但是順序卻不是最重要的問題,甚至可以說是沒有太多意義的問題,因為在很多情況下,你可能并不會混合使用這四種處理機制。我想,最重要的問題還是在如何選用這些錯誤處理機制上。對于這個問題,希望有經驗的朋友能夠談談看法。

好了,關于四種ASP.NET的錯誤處理機制就介紹到這里,也該說說自己的一些感受了。ASP.NET的設計者確實站在開發者的角度作了周全的考慮,因此提供了多達四種的錯誤處理機制供我們選用,這一點是值得稱道的。但是套用一句廣告詞——多則惑,我們也會被這么多的錯誤處理機制弄得有些頭暈。對照J2EE領域中的錯誤處理,我們可以發現會相對簡單一些。首先是對應<customErrors>的設置,我們也可以從J2EE項目最常用的web.xml文件中找到類似的配置項:<errorPage>;其次,在J2EE的領域中,Page并不是一個重要的實體而且事件驅動模型也不是必需的,所以我還真的找不到與Application_Error和Page_Error方法對應的處理機制;最后,在J2EE的領域中,更多強調的是Request和Response,一旦在邏輯處理中出現了錯誤,我們可以很容易地通過RequestDispatcher將Request分發到相應的錯誤處理模塊中,事實上這是非常靈活的一種處理方式,有興趣的朋友不妨了解一下。

 

【編輯推薦】

  1. WCF初試,用JQuery實現loading的功能
  2. jQuery調用WCF服務傳遞JSON對象
  3. WCF的傳輸安全機制
  4. 詳解WCF中的變更處理:不可不知的最佳實踐
  5. 使用ASP.NET AJAX調用WCF服務項模板
責任編輯:佚名 來源: 網絡轉載
相關推薦

2009-07-31 11:28:42

錯誤處理機制ASP.NET

2009-08-05 16:04:50

2024-09-24 17:34:05

2009-07-31 14:49:22

asp.net自定義錯

2021-03-02 09:12:25

Java異常機制

2015-10-09 13:54:14

切面編程錯誤處理機制

2009-08-04 15:22:33

ASP.NET緩存機制

2009-07-20 16:04:37

ASP.NET fra

2009-07-29 10:56:54

ASP.NET構架與安

2009-08-03 18:35:51

ASP.NET數據緩存

2009-08-17 16:59:36

ASP.NET緩存機制

2009-01-07 11:38:22

ASP.NET.NET錯誤記錄

2009-08-05 14:01:50

ASP.NET配置錯誤

2010-05-06 13:33:47

Asp.Net負載均衡

2009-04-08 09:58:07

ASP.NET MVCTempData框架

2009-07-23 10:06:29

2009-12-07 09:23:05

ASP.NET MVC

2009-02-06 14:11:36

ASP.NET.NET全局異常處理

2009-07-22 17:45:35

ASP.NET教程

2009-08-03 14:22:33

什么是ASP.NET
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 一级黄色播放 | 国产99热在线 | 视频一区二区中文字幕 | 麻豆精品久久 | 99re视频在线| 99re在线视频精品 | 成人污污视频 | 久久一二 | 成年人在线观看 | 亚洲三级在线观看 | wwww.xxxx免费 | 久久精品国产99国产精品 | h片免费看 | 亚洲在线日韩 | 成人亚洲 | 欧美一级网站 | 国产午夜精品久久 | 日韩欧美精品在线 | 欧美一级黄色免费 | 污书屋 | 欧美a v在线 | 在线观看国产视频 | 亚洲国产成人av好男人在线观看 | 成人在线a | .国产精品成人自产拍在线观看6 | 视频二区 | 中文在线一区二区 | 亚洲精品视 | 伊人色综合久久天天五月婷 | 成人毛片在线视频 | 午夜久久久久 | 日韩精品一区二区三区高清免费 | 日本亚洲欧美 | 欧美一级黄带 | 日韩精品激情 | 国产99视频精品免费视频7 | 国产真实乱全部视频 | 国产成人综合在线 | 国产一区二区三区视频在线观看 | 久久久久久久91 | 精品国产一级 |