捕获.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生成的默认错误消息。