Как захватить AggregateException? [Дубликат]

1
задан Arvis 27 April 2015 в 16:02
поделиться

2 ответа

При использовании async / await исключения автоматически разворачиваются на сайте await. При использовании Task и .Wait() любое исключение завершается, когда они выходят из Task, и, таким образом, получение информации требует, чтобы вы перешли в свойство Task.Exception , так как они не распространяйте стек вызовов.

См. https://dotnetfiddle.net/MmEXsT

0
ответ дан David 1 September 2018 в 07:58
поделиться

Методы, возвращающие Task - такие как Task.Run или async методы, будут помещать любые исключения из возвращаемого Task. Вам решать это исключение. Обычно это делается с помощью await, например:

await Task.Run(() => { throw ... });

В вашем случае проблема в этой строке:

result = OnSomeEvent((s, ea) => RunSomeTask());

В этом коде RunSomeTask возвращает Task и что Task никогда не ожидается. Чтобы наблюдать за исключением, вы должны await выполнить эту задачу.

1
ответ дан Stephen Cleary 1 September 2018 в 07:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: