如何在ASP.Net Webform中处理和**显示**页面级异常

时间:2009-08-04 17:08:38

标签: asp.net

我想使用ASPX页面的Error事件来捕获该页面中发生的任何未处理的异常,并设置标签控件的文本以向用户显示错误(我意识到这可能不是推荐的最好的做法,这是一个快速和肮脏的。)

所以,在错误事件中,我会有类似的东西:

Me.lblError.Text = Server.GetLastError.Message

然而,当我运行此错误并且发生错误时,我可以通过设置断点看到此行正在执行,但屏幕始终为空白。我在设置文本后尝试使用和不使用Server.ClearError,但结果是相同的。

不应该这样吗??

更新

请参阅下面的正确答案以及本文:
http://msdn.microsoft.com/en-us/library/ed577840.aspx

2 个答案:

答案 0 :(得分:1)

通常我会在Global.asax级别看到这个,并重定向到错误页面。而不是在页面上处理。

答案 1 :(得分:1)

您不能在此事件中影响Label控件的Text属性。这与ASP.NET的页面执行模型有关。

但是,您仍然可以将信息写入屏幕。您可以使用Response.Write执行此操作。以下是一个示例:

protected void Page_Error(object sender, EventArgs e)
{     
    Exception exc = Server.GetLastError();        
    Response.Write(exc.Message);
    Server.ClearError();
}

但是,您应该考虑.asax中的全局错误处理程序。