2

问题说明了一切,以这个示例代码为例:

<ul id="css-id">
    <li>
    <something:CustomControl ID="SomeThingElse" runat="server" />
    <something:OtherCustomControl runat="server" />
    </li>
</ul>

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

4

5 回答 5

6

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

protected void Application_Error(Object sender, EventArgs e)

方法。

于 2008-09-26T06:58:44.180 回答
2

不幸的是,未处理的异常总是会导致您的站点出错。不过,您可以通过几种方法来防止这种情况。

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

最佳解决方案

  • 确保您的控件不会抛出未处理的异常!
于 2008-09-26T06:59:03.180 回答
1

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

于 2008-09-26T06:58:45.583 回答
1

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

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

于 2008-09-26T07:00:13.443 回答
1

你想捕捉异常并处理它吗?

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

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

特别是这一段:

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

于 2008-09-26T07:03:59.660 回答