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

时间:2008-09-26 06:54:20

标签: c# .net asp.net exception error-handling

问题说明了所有内容,请使用此示例代码:

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

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

5 个答案:

答案 0 :(得分:5)

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

protected void Application_Error(Object sender, EventArgs e)

方法

答案 1 :(得分:2)

不幸的是,未处理的异常将始终错误您的网站。 你可以通过几种方式防止这种情况。

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

最佳解决方案

  • 确保您的控件不会抛出未处理的异常!

答案 2 :(得分:1)

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

答案 3 :(得分:1)

使用global.asax Application_Error方法,如How to create custom error reporting pages in ASP.NET by using Visual C# .NET

中所述

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

答案 4 :(得分:1)

你想抓住异常并处理它吗?

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

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

特别是这一段:

  

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