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 ex'将截断堆栈跟踪,我想使用throw
代替throw ex
,但我得到:
不允许在catch子句之外使用不带参数的throw语句。
如何在不截断stacktrace的情况下使用lambda表达式抛出异常?
答案 0 :(得分:2)
为什么不用新的异常作为InnerException创建一个新的Exception?
e => throw new WhateverException("your message", ex);
保留原始的堆栈跟踪。