【发布时间】:2012-01-10 10:02:43
【问题描述】:
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 语句。
如何使用 lambda 表达式在不截断堆栈跟踪的情况下引发异常?
【问题讨论】:
-
我相信这是因为 throw 是一个语句而不是一个表达式,所以你必须提出一个新的异常并将现有的异常作为内部传递,正如下面 Botz 所建议的那样
标签: c# multithreading delegates lambda throw