如何从异常中获取更多细节?
问题描述:
我有一个.NET 4.0 Web应用程序,它在Global.asax的Application_Error事件中实现了一个错误处理程序。如何从异常中获取更多细节?
发生异常时此拦截,并派我在内的各种类的登录用户,页面信息上发生错误的电子邮件,会议内容等
这是所有伟大的,但有一些基本的细节丢失,我似乎无法找到。
举例来说,这是一个错误的一个子集,我会收到和相关的堆栈跟踪:
Source: Telerik.Web.UI
Message: Selection out of range
Parameter name: value
Stack trace: at Telerik.Web.UI.RadComboBox.PerformDataBinding(IEnumerable dataSource)
at Telerik.Web.UI.RadComboBox.OnDataSourceViewSelectCallback(IEnumerable data)
at System.Web.UI.DataSourceView.Select(DataSourceSelectArguments arguments, DataSourceViewSelectCallback callback)
at Telerik.Web.UI.RadComboBox.OnDataBinding(EventArgs e)
at Telerik.Web.UI.RadComboBox.PerformSelect()
at System.Web.UI.WebControls.BaseDataBoundControl.DataBind()
at Telerik.Web.UI.RadComboBox.DataBind()
at System.Web.UI.WebControls.BaseDataBoundControl.EnsureDataBound()
at Telerik.Web.UI.RadComboBox.OnPreRender(EventArgs e)
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Control.PreRenderRecursiveInternal()
at System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint)
现在一样可爱,因为这是我可以知道一个做)控制和B的名称)导致控制超出范围的值。
有关我如何获得此类信息的任何建议?我已经在调试模式下运行这个,并且传递给Global.asax的对象似乎没有包含我可以看到的更多细节。
答
随您的装配一起运送您的PDB。通过这种方式,您将在异常堆栈跟踪中获取行号和源代码文件名。一旦你有行号,你就知道你在那行上写了什么代码。
答
您可以显示这种例外如下
try
{
}
catch(Exception ex)
{
Response.Write("Source: " + ex.Source);
Response.Write("Message: " + ex.Message);
Response.Write("Stack Trace: " + ex.StackTrace);
}
答
我无法履行而无需实现一些自定义代码我的要求。
我现在在MasterPage中添加了一些代码,每次回发时都存储__EVENTTARGET和__EVENTARGUMENT参数。只要有新的页面加载,这些都会被清除。如果发生错误,这些值构成调试电子邮件的一部分,这使我们能够了解错误发生时用户正在做什么。
您需要在发生异常的地方捕捉异常,并从那里登录以获取您要查找的信息。 – 2012-03-19 17:59:44
您是否尝试重写['MasterPage.OnError(EventArge)'](http://msdn.microsoft.com/zh-cn/library/system.web.ui.templatecontrol.onerror.aspx)? – abatishchev 2012-03-19 18:00:57
您如何获取已显示的数据?这个例外是不是包含你想要的信息?如果是这样,你可能会运气不好,除非你能够添加更多的数据到抛出的异常... – Chris 2012-03-19 18:01:29