捕获 .aspx 页和 .ascx 页中的异常
本文关键字:异常 ascx aspx 页和 捕获 | 更新日期: 2023-09-27 17:47:21
问题说明了一切,以以下示例代码为例:
<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)
方法。
不幸的是,
未经处理的异常总是会错误您的网站。不过,您可以通过几种方式防止这种情况。
- 使用 web.config 中的部分显示用户友好的消息
- 在您的 Global.asax 或自定义处理程序中 - 捕获未经处理的异常并做出相应的反应 - 像这样
最佳解决方案
- 确保控件不会引发未经处理的异常!
添加一个 global.asax en 实现Application_Error处理程序。使用 Server.GetLastError() 函数获取引发的异常的句柄。
使用 global.asax Application_Error 方法,如如何使用 Visual C# .NET 在 ASP.NET 中创建自定义错误报告页中所述。
另一种方法是使用HTTP模块;这为您提供了更大的灵活性(例如,您可以处理来自多个应用程序的错误)。
是否要捕获异常并处理它?
还是您想防止黄屏死机? 如果您试图防止黄屏死机,请查看处理HttpApplication
上的Error
事件(换句话说,在您的 Global.asax 中)。
有关更多详细信息,请参阅以下 MSDN 页面:http://msdn.microsoft.com/en-us/library/system.web.httpapplication.error.aspx
具体到这一段:
引发 Error 事件的异常可以通过调用 GetLastError 方法进行访问。如果应用程序生成自定义错误输出,请禁止显示由 ASP.NET 通过调用 ClearError 方法生成的默认错误消息。