У меня есть некоторый код, который делает асинхронный HTTP вызов следующим образом:Почему мой блок try/catch не захватывает System.AggregateException?
try
{
var myHttpClient = new HttpClient();
var uri = "http://myendpoint.com";
HttpResponseMessage response = client.GetAsync(uri).Result;
}
catch (Exception ex)
{
Console.WriteLine("an error occurred");
}
Большую часть времени это работает хорошо, но иногда я получу System.AggregateException
, который читает One or more errors occurred. ---> System.AggregateException: One or more errors occurred. ---> System.Threading.Tasks.TaskCanceledException: A task was canceled. --- End of inner exception stack trace
Мой улов заявление никогда достигнуто в приведенном выше случае, и я не знаю, почему. Я знаю, что у Заданий есть некоторые осложняющие факторы, когда они бросают исключения, но я не знаю, как обращаться с ними в своем заявлении о выводе?
Можете ли вы поделиться StackTrace исключительной ситуации? – mrwaim
Разве вы не ожидаете асинхронного запроса? –
@ jkj2000: Вероятно, вы видите это исключение из другой задачи, а не тот, который был возвращен из «GetAsync» в приведенном выше коде. Выбранный код примера всегда будет вызывать исключение. –