1

我在收集有关在我的代码中生成的未处理异常的信息(非常少见)时遇到了一些麻烦。我已经以标准方式设置了一个处理程序。

我主要有:

AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(ExceptionProcessor);

处理函数是:

public void ExceptionProcessor(object sender, UnhandledExceptionEventArgs e)
{
    Log(((Exception)e.ExceptionObject).StackTrace);
}

但我得到的只是一条线(并不总是相同的)。谷歌搜索显示,这些行在 .Net Framework 库中很深,并且应该是堆栈跟踪的最后一行。因此,关于我的代码的所有实际有用的信息都丢失了。有谁知道可能导致这种行为的原因是什么?

我最近得到的那行说它不能将 System.Threading.AutoResetEvent 转换为 System.Threading._ThreadPoolWaitOrTimerCallback。

谢谢。

4

3 回答 3

0

你记录内部异常吗?每个异常都有InnerException可能包含另一个异常的属性。

于 2010-10-27T15:23:09.700 回答
0

我有时使用 e.tostring() 将整个异常详细信息写入日志。试试那个。。

于 2010-10-27T14:24:39.343 回答
0

这很奇怪。e.ExceptionObject 的类型是什么?是自定义异常吗?

我敢打赌,在某些情况下,您真正​​感兴趣的异常被捕获,然后被重新扔到某个地方......

于 2010-10-27T13:15:47.037 回答