在我的网页中避免尝试/捕捉地狱

时间:2010-05-31 20:53:56

标签: asp.net c#-4.0 error-handling

我正在编写一个ASP.NET网站,这对我来说是一个新框架。我发现我的代码隐藏的每个方法都有一个try / catch块。所有这些try / catch块都捕获异常,然后向用户弹出错误消息。 ASP.NET中没有某种全局错误处理程序吗?值得注意的是我的错误处理是在控制(ASCX)页面内,我想要一种方法来简单地让每个ASCX处理它自己的错误,而不会强迫所有错误处理只是单个母版页或重定向...


感谢下面的建议。我确实尝试过Page_Error,因为它似乎是一个积极的选择。我运行了一个测试,我的异常现在通过Page_Error运行,但事情并不完全正常...我在Page_Error结束时使用'Content.ClearError()',但是,客户端浏览器仍然以未处理的方式运行PageRequestManagerServerErrorException。有什么建议?如果它有帮助,我正在使用Telerik并尝试在发生错误时弹出一个radalert ...

4 个答案:

答案 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