捕获.aspx和.ascx页面中的exception

问题说明了一切,拿这个例子代码:

现在,如果在这些控件(位于母版页中)的某个位置抛出错误,它们将取消整个站点,如何捕获这些exception?

您可以捕获Global.asax页面/类中未处理的所有exception。 看着:

 protected void Application_Error(Object sender, EventArgs e) 

方法。

不幸的是,未处理的exception将始终错误您的网站。 你可以通过几种方式防止这种情况发生。

  • 使用web.config中的部分显示用户友好的消息
  • 在您的Global.asax中 – 或自定义处理程序 – 捕获未处理的exception并做出相应的反应 – 就像这样

最佳方案

  • 确保控件不会抛出未处理的exception!

添加global.asax zh_cn实现Application_Error处理程序。 使用Server.GetLastError()函数获取抛出exception的句柄。

使用global.asax Application_Error方法,如如何使用Visual C#.NET在ASP.NET中创建自定义错误报告页面中所述 。

另一种方法是使用HTTP模块 ; 这为您提供了更多灵活性(例如,您可以处理来自多个应用程序的错误)。

你想抓住exception并处理它吗?

或者你想阻止黄色死亡屏幕? 如果您试图阻止黄色死亡屏幕,请查看HttpApplication上的Error事件处理(换句话说,在您的Global.asax中)。

有关更多详细信息,请参阅以下MSDN页面: http : //msdn.microsoft.com/en-us/library/system.web.httpapplication.error.aspx

特别是这一段:

可以通过调用GetLastError方法来访问引发Error事件的exception。 如果您的应用程序生成自定义错误输出,请禁止通过调用ClearError方法由ASP.NET生成的默认错误消息。