我在收集有關在我的代碼中生成(很少)未處理的異常的信息時遇到了一些問題。我已經建立了一個非常標準的處理程序。只有異常堆棧跟蹤的最後一行出現
在主,我有:
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。
謝謝。
我可能問的很明顯,但是有沒有InnerException? – 2010-10-27 13:05:25
你正在編譯爲Debug或Release模式嗎?編譯器可能會內聯你的一些函數。您的堆棧跟蹤中也會丟失行號。 – 2010-10-27 13:06:03
@Dave我在發佈時丟失了行數,但是當我捕獲正常的異常時,我不會丟失任何堆棧跟蹤,這種行爲對於UnhandledException情況是唯一的。 – United 2010-10-27 13:12:08