有時候你是在維護之前人寫得程式,如果要在事後為那些程式碼加上try ... catch這樣工程很浩大。因此,ASP.net提供了一個機制,當你的網站發生未處理的錯誤時,則會自動呼叫Global.asax的
Application_Error函數。
Application_Error函數裡要取得程式發生錯誤的例外,只要呼叫
Server.GetLastError().
GetBaseException()即可。exception中有用的資訊大概就message和
StackTrace這兩個屬性。
要取得發生錯誤的網址則用
Request
.RawUrl。要取得cookie或者form等資訊,則可以利用
Request
.
Params。程式碼大概就像下面那樣
void
Application_Error(
object
sender, EventArgs e)
{ writeErrorLog(
Server.GetLastError().
GetBaseException(),
Request,Session);
Response.Redirect("error.html")//轉到你要去的錯誤畫面
}
void writeErrorLog(Exception ex,System.Web.HttpRequest Request,System.Web.SessionState.HttpSessionState Session)
{
//這邊你可以做你想做的事情,如紀錄錯誤到資料庫之類的。
}