我在收集有关在我的代码中生成(非常罕见)未处理异常的信息时遇到了一些麻烦。我已经以标准的方式设置了一个处理程序。
主要是我:
AppDomain.CurrentDomain.UnhandledException += new UnhandledExceptionEventHandler(ExceptionProcessor);
处理函数是:
public void ExceptionProcessor(object sender, UnhandledExceptionEventArgs e)
{
Log(((Exception)e.ExceptionObject).StackTrace);
}
但我得到的只是一条线(并不总是一条线)。谷歌搜索显示这些行深入.Net框架库内部,并且是堆栈跟踪的最后一行。因此,缺少有关我的代码的所有实际有用信息。有谁知道可能导致这种行为的原因是什么?
我最近得到的一句话说它无法将System.Threading.AutoResetEvent转换为System.Threading._ThreadPoolWaitOrTimerCallback。
感谢。
答案 0 :(得分:0)
这很奇怪。 e.ExceptionObject的类型是什么?这是一个自定义的例外吗?
我敢打赌,在某些情况下,您的实际利益异常被捕获,然后被重新抛出......
答案 1 :(得分:0)
我有时会使用e.tostring()将整个异常细节写入日志。试试..
答案 2 :(得分:0)
您是否记录内部异常?每个异常都有InnerException
属性,可能包含另一个异常。