我正在编写一个ASP.NET网站,这对我来说是一个新框架。我发现我的代码隐藏的每个方法都有一个try / catch块。所有这些try / catch块都捕获异常,然后向用户弹出错误消息。 ASP.NET中没有某种全局错误处理程序吗?值得注意的是我的错误处理是在控制(ASCX)页面内,我想要一种方法来简单地让每个ASCX处理它自己的错误,而不会强迫所有错误处理只是单个母版页或重定向...
感谢下面的建议。我确实尝试过Page_Error,因为它似乎是一个积极的选择。我运行了一个测试,我的异常现在通过Page_Error运行,但事情并不完全正常...我在Page_Error结束时使用'Content.ClearError()',但是,客户端浏览器仍然以未处理的方式运行PageRequestManagerServerErrorException。有什么建议?如果它有帮助,我正在使用Telerik并尝试在发生错误时弹出一个radalert ...
答案 0 :(得分:7)
您可以在页面级中实施Page_Error
事件处理程序。这听起来非常适合你的要求。
否则,在应用程序级别上更全局,您可以在Global.asax中尝试Application_Error
事件处理程序。
另请参阅http://msdn.microsoft.com/en-us/library/aa479319.aspx,其中包含有关asp.net中错误处理的大量信息。
答案 1 :(得分:2)
您可以在web.config中设置CustomErrors节点。这样,每当发生异常时,用户都会自动重定向到友好的错误消息页面。
答案 2 :(得分:2)
结帐global.asax documentation。
global.asax文件包含处理错误的全局方法。发生错误时,将调用Application_Error
方法。此方法是处理和记录错误的好地方,因为它是最有用的。
答案 3 :(得分: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
中的CustomError属性<customErrors mode="On" defaultRedirect="~/error.aspx" />
因此,如果存在unhandeld异常,则用户将重定向到error.aspx