Ответ 1
Как прокомментировали другие, это зависит от того, что вы вызываете с помощью HttpClient. Я получаю то, что вы имели в виду, хотя и вот некоторые исключения, вызванные типичными вызовами методов.
SendAsync
может бросить:
- ArgumentNullException Запрос был нулевым.
- InvalidOperationException Сообщение запроса уже отправлено экземпляром HttpClient.
- HttpRequestException. Не удалось выполнить запрос из-за основной проблемы, такой как сетевое подключение, сбой DNS, сертификат сервера валидация или тайм-аут.
https://msdn.microsoft.com/en-us/library/hh138176(v=vs.110).aspx
Аналогично GetAsync
PostAsync
PutAsync
GetStringAsync
GetStreamAsync
и т.д. могут бросать ArgumentNullException
и HttpRequestException
как указано выше (но не InvalidOperationException
).
https://msdn.microsoft.com/en-us/library/hh158944(v=vs.110).aspx
Как только вы вызвали SendAsync
или GetAsync
и т.д., вы получите Task<HttpResponseMessage>
. Когда-то я ожидал, что я назову EnsureSuccessStatusCode()
, чтобы выбросить HttpRequestException
, если возвращается код состояния HTTP с невыполненным успехом. https://github.com/dotnet/corefx/blob/master/src/System.Net.Http/src/System/Net/Http/HttpResponseMessage.cs#L161