捕获 .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>

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

捕获 .aspx 页和 .ascx 页中的异常

您可以在 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 方法生成的默认错误消息。