在.aspx和.ascx页面中捕获异常
时间:2020-03-06 14:46:08 来源:igfitidea点击:
该问题说明了一切,请使用以下示例代码:
<ul id="css-id"> <li> <something:CustomControl ID="SomeThingElse" runat="server" /> <something:OtherCustomControl runat="server" /> </li> </ul>
现在,如果在这些控件(位于母版页中)中某个地方引发错误,则它们将占用整个站点,那么如何捕获这些异常?
解决方案
我们可以在Global.asax页面/类中的所有地方捕获所有未处理的异常。
看着:
protected void Application_Error(Object sender, EventArgs e)
方法。
添加一个global.asax,以实现Application_Error处理程序。使用Server.GetLastError()函数获取引发的异常的句柄。
不幸的是,未处理的异常将始终使网站出错。
我们可以通过几种方法来防止这种情况。
- 使用web.config中的部分显示用户友好的消息
- 在Global.asax(或者自定义处理程序)中,捕获未处理的异常并做出相应的反应,就像这样
最好的解决方案
- 确保控件不会抛出未处理的异常!
使用global.asax Application_Error方法,如如何使用Visual C.NET在ASP.NET中创建自定义错误报告页面中所述。
另一种方法是使用HTTP模块。这为我们提供了更大的灵活性(例如,我们可以处理来自多个应用程序的错误)。
我们是否想捕获并处理异常?
还是要防止死亡黄屏?如果我们试图防止黄屏死机,请查看处理HttpApplication上的Error事件(换句话说,在Global.asax中)。
有关更多详细信息,请参见下面的MSDN页面:
http://msdn.microsoft.com/zh-CN/library/system.web.httpapplication.error.aspx
特别是本段:
The exception that raises the Error event can be accessed by a call to the GetLastError method. If your application generates custom error output, suppress the default error message that is generated by ASP.NET by a call to the ClearError method.