1、AspNet提供的基本異常處理機制
1)<customerrors defaultredirect="Error.aspx" mode="on"/>
2)Error.aspx CodeBehind : hlinkPreviousPage.NavigateUrl = Request["aspxerrorpath"];
AspNet runtime獲取到異常後,將請求跳轉至Error頁面,同時aspxerrorpath傳遞前一個頁面路徑
2、異常處理機制設計:
1)在Global.asax ->Application_Error()中統一捕獲異常並處理
void Application_Error(object sender, EventArgs e){
Exception ex = Server.GetLastError();
ErrorHandler.ReportError(ex);
Server.ClearError();
Response.Redirect(string.Format("Error.aspx?aspxerrorpath={0}",Request.Url.PathAndQuery));
}
3、自定義異常類,BaseException,BLLException,DALException,同時定義不同異常類的處理方式:
1)DALException在DAL封裝後丟擲,BLL層就不要Try..Catch..Throw,直接讓Application_Error()catch該型別異常;
2)Application_Error()中只捕獲DALException與未設定Try..Catch的異常,BLLException在CodeBehind中Try..Catch,該類異常只是告訴Users輸入正確的值;
3)確保只在一個地方Catch一個被丟擲的異常(在CodeBehind或者Application_Error); Do not re-throw it after you catch.Throw once,Catch once.
原文連結:http://www.codeproject.com/Articles/155810/Back-to-the-Basics-Exception-Management-Design-Gui