2010-05-31 54 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方法。这种方法是处理和记录错误的好地方,因为它是最实用的。