WPF Dispatcher Thread- Использование лямбда-выражения и throw для отправки исключения в поток пользовательского интерфейса
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
но я получаю:
Оператор throw без аргументов не допускается вне предложения catch.
Как я могу использовать лямбда-выражение для генерирования исключения без усечения трассировки стека?
1 ответ
Решение
Почему бы вам просто не создать новое исключение со старым исключением как InnerException?
e => throw new WhateverException("your message", ex);
Это сохраняет оригинальную трассировку стека.