天天看點

【轉】asp.net 利用Global.asax 捕獲整個解決方案中的異常錯誤

  之前做項目的時候都是在每個頁面中處理這不同的異常資訊,一個頁面數下來,很多個try{}catch{}語句塊,令整個代碼結構有些不夠美觀。

            今天看到一篇文章,是關于利用全局應用程式類來幫忙擷取異常資訊,利用 server.Transfer('''')指定接受錯誤的頁面;加上在接受錯誤頁面中利用 server.GetLastError() 擷取前一個異常源。

            Global.asax 中的Application_Error 函數如下:

protected void Application_Error(object sender, EventArgs e)  
       {  
           //捕獲整個解決方案下的所有異常  
           try  
           {  
               Server.Transfer("~/Error.aspx");  
           }  
           catch { }  
       } 
      

            錯誤接受頁面 Error.aspx 擷取異常資訊的相關代碼如下:

Exception ex = Server.GetLastError().GetBaseException(); //擷取異常源  
               if (ex != null)  
               {    
                   Response.Write(ex.Message);      
               }  
               //清空前一個異常  
               Server.ClearError(); 
      

            測試頁面Text.aspx中的測試異常代碼如下:

//測試是否捕獲了異常資訊  
   //test1  
  //int UserID = Convert.ToInt32(Request["UserID"].ToString());  
  
  
  //test2  
  string Name = "aganar";  
  
  int UID = Convert.ToInt32(Name); 
      

            運作Test.aspx頁面,我們會看到相關的異常資訊,我們能夠清晰地看出,在頁面Test.aspx頁面中未曾有任何一個try{}catch{}語句塊存在,我們即可很友善輕松地捕獲到異常資訊。

繼續閱讀