Возможны ли исключения syn c в HttpClient? - PullRequest
0 голосов
/ 05 августа 2020

Прямо сейчас я не говорю о ArgumentNullException или InvalidOperationException, а более или менее только о HttpRequestException.

var responseAsync = httpClient.SendAsync(something);
try
{
    var response = await responseAsync;
}
catch(Exception)
{
}

Будет ли этот код когда-либо вызывать какие-либо исключения, или мы можем смело предполагайте, что все возможные исключения могут произойти только во время await?

1 Ответ

1 голос
/ 05 августа 2020

"но более или менее только об исключении HttpRequestException"

MSDN:

doco проясняет:

HttpRequestException Запрос не удался из-за основной проблемы, такой как подключение к сети, сбой DNS, проверка сертификата сервера или тайм-аут .

Итак, ответ будет «да» , если, скажем, ваша кошка вытащила сетевой шнур, например.

Будет ли этот код выдавать какие-либо исключения,

Да.

или мы можем с уверенностью предположить, что все возможные исключения могут произойти только во время ожидания?

Это может произойти и в следующей строке, потому что к моменту SendAsync возвращается (не путать с завершением Task), Task уже создан, и есть небольшая вероятность его выброса, прежде чем вы перейдете к следующей строке.

var responseAsync = httpClient.SendAsync(something);

EDIT: (из моего комментария ниже) Кроме того, насколько нам известно, SendAsync может работать некоторая "начальная проверка" перед созданием Task. В этом случае вам понадобится try/catch из вышеуказанного.

...