问题说明了一切,以这个示例代码为例:
<ul id="css-id">
<li>
<something:CustomControl ID="SomeThingElse" runat="server" />
<something:OtherCustomControl runat="server" />
</li>
</ul>
现在,如果在这些控件(位于母版页中)的某个地方抛出错误,它们将关闭整个站点,如何捕获这些异常?
问题说明了一切,以这个示例代码为例:
<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() 函数获取抛出异常的句柄。
使用 global.asax Application_Error 方法,如如何使用 Visual C# .NET 在 ASP.NET 中创建自定义错误报告页面中所述。
另一种方法是使用HTTP 模块;这为您提供了更多的灵活性(例如,您可以处理来自多个应用程序的错误)。
你想捕捉异常并处理它吗?
或者你想防止黄屏死机?如果您试图阻止黄屏死机,请查看在(换句话说,在您的 Global.asax 中)处理Error
事件。HttpApplication
有关详细信息,请参阅以下 MSDN 页面:http: //msdn.microsoft.com/en-us/library/system.web.httpapplication.error.aspx
特别是这一段:
可以通过调用 GetLastError 方法来访问引发错误事件的异常。如果您的应用程序生成自定义错误输出,请取消由 ASP.NET 通过调用 ClearError 方法生成的默认错误消息。