Какие определенные коды состояния заставляют WebException быть брошенным HttpWebRequest. GetResponse ()?

Я искал вокруг для некоторой категорической документации относительно этого, но не имел большой удачи при нахождении любого.

Для которого будут коды состояния ответа HTTP HttpWebRequest.GetResponse() генерируйте a WebException после выполнения чего-то как POST?

А именно, будет это генерировать a WebException для чего-либо кроме состояния 200 OK? Или это только генерирует a WebException для говорят, 400, 404, и 500 (ради аргумента)?

Я хочу знать, так как сервер, которым я связываюсь с, определяет что-либо кроме HTTP 200 OK возвращение как состояние ошибки. Я могу полагаться на a WebException будучи сгенерированным для чего-нибудь кроме 200?

Я в настоящее время писал свой код, чтобы проверить, что статус возврата кодирует каждый раз и гарантирует, что это 200 OK. Если это не будет, то это примет соответствующие меры — но существует много дублирования между тем кодом и блоком выгоды для a WebException то, что я надеюсь вымыться.

Любые необходимые ссылки на документацию больше всего ценились бы.

10
задан Michael 13 February 2019 в 15:26
поделиться

3 ответа

Закончил выполнение явной проверки после ответа, перехвата и проверки WebExceptions; приводит к дублированию кода, но нет однозначного ответа на вопрос, будет ли WebException ВСЕГДА возникать, если статус НЕ 200.

2
ответ дан 4 December 2019 в 04:20
поделиться

Я думаю, что будет, но это звучит как рискованное предположение. С одной стороны, документы MSDN ясно дают понять, что GetResponse будет генерировать исключения, отличные от только WebException . Однако я могу с уверенностью сказать по опыту, что ответ «304 Not-Modified» будет выдан как WebException .

Все эти разговоры источают дурной запах кода; не используйте исключения для управления потоком выполнения. Лучше правильно обрабатывать исключения, а затем явно проверять свойство StatusCode на предмет допустимых значений.

1
ответ дан 4 December 2019 в 04:20
поделиться

Система WebException является отдельной системой от системы ошибок HTTP . Это в основном связано с тем, что ошибки HTTP возвращаются браузером или клиентом, а WebException генерируется сервером при создании вашей страницы. К моменту обнаружения ошибки HTTP страница отправляется клиенту, и вы не узнаете об этом.

0
ответ дан 4 December 2019 в 04:20
поделиться
Другие вопросы по тегам:

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