2010-05-31 64 views
2

我正在寫一個ASP.NET網站,這是一個新的框架。我發現我的代碼隱藏的每一個方法都有一個try/catch塊。所有這些try/catch塊都會捕獲異常,然後向用戶彈出錯誤消息。 ASP.NET中沒有某種全局錯誤處理程序嗎?值得注意的是,我的錯誤處理是在控制(ASCX)頁面中,我想要一種方法來簡單地讓每個ASCX處理自己的錯誤,而不是強制所有的錯誤處理僅僅是一個主頁面或重定向...避免在我的網頁中嘗試/抓住地獄


感謝您的建議。我確實嘗試了Page_Error,因爲它似乎是一個積極的選擇。我運行了一個測試,現在我的異常現在通過Page_Error運行,然而事情並沒有起作用......我在我的Page_Error的末尾使用了'Content.ClearError()',但是,客戶端瀏覽器仍然以未處理PageRequestManagerServerErrorException。有什麼建議?如果有幫助,我正在使用Telerik並試圖在發生錯誤時彈出一個radalert ...

+1

「全局錯誤處理程序」和「每個ascx來處理它自己的錯誤」聽起來像他們互相排斥。否則,我建議Global.asax ... – marapet 2010-05-31 21:01:51

回答

7

您可以在頁級別上實施Page_Error事件處理程序。這聽起來很適合你的要求。

否則,更全局的應用程序級別,您可以嘗試Global.asax中的Application_Error事件處理程序。

另請參閱http://msdn.microsoft.com/en-us/library/aa479319.aspx其中包含有關錯誤處理在asp.net中的大量信息。

2

您可以在web.config中設置CustomErrors節點。這種方式發生異常時,用戶會自動重定向到友好的錯誤消息頁面。

0

我推薦使用這樣的東西,而不是拋出ecxceptions。這聽起來像你正在做的例外爲基礎的編程

if(myTextBox.Text == "foo") 
{ 
    this.RaiseError(); // method where you tell a label or something, where you say the user that and error (though no exception!) occured 
} 

你正在尋找的東西是在web.config

<customErrors mode="On" defaultRedirect="~/error.aspx" /> 

所以,如果有一個unhandeld異常CustomError屬性,用戶獲得重定向到error.aspx

2

結賬global.asax documentation。 global.asax文件包含處理錯誤的全局方法。發生錯誤時,將調用Application_Error方法。這種方法是處理和記錄錯誤的好地方,因爲它是最實用的。