之前做項目的時候都是在每個頁面中處理這不同的異常信息,一個頁面數下來,很多個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{}語句塊存在,我們即可很方便輕松地捕獲到異常信息。
新聞熱點
疑難解答