2011-12-01 38 views
3
try 
{ 
    string s = null; 
    s.PadLeft(10); 
} 
catch (Exception ex) 
{ 
    // send exception to UI Thread so it can be handled by our global exception 
    // handler 
    Application.Current.Dispatcher.Invoke(DispatcherPriority.Send, 
     new Action<Exception>(e => { throw ex; }), ex); 
} 

正如你所看到的,「扔恩」將截斷堆棧跟蹤,我想用throw代替throw ex但我得到:WPF調度Thread-使用lambda表達式,並拋出派遣例外UI線程

的throw語句不帶參數不允許在catch子句之外。

如何使用lambda表達式拋出異常而不截斷stacktrace?

+0

我相信這是因爲扔是一個語句不是表達式,所以,你提出一個新的異常,並通過現有的內部,如下 – sll

回答

2

你爲什麼不只是創建與舊異常作爲一個的InnerException新的異常?

e => throw new WhateverException("your message", ex); 

保留原始堆棧跟蹤。

+0

+1勸通過Botz,我相信這僅僅是一個正確的解決方案 – sll