Я искал вокруг для некоторой категорической документации относительно этого, но не имел большой удачи при нахождении любого.
Для которого будут коды состояния ответа 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
то, что я надеюсь вымыться.
Любые необходимые ссылки на документацию больше всего ценились бы.
Закончил выполнение явной проверки после ответа, перехвата и проверки WebExceptions; приводит к дублированию кода, но нет однозначного ответа на вопрос, будет ли WebException ВСЕГДА возникать, если статус НЕ 200.
Я думаю, что будет, но это звучит как рискованное предположение. С одной стороны, документы MSDN ясно дают понять, что GetResponse
будет генерировать исключения, отличные от только WebException
. Однако я могу с уверенностью сказать по опыту, что ответ «304 Not-Modified» будет выдан как WebException
.
Все эти разговоры источают дурной запах кода; не используйте исключения для управления потоком выполнения. Лучше правильно обрабатывать исключения, а затем явно проверять свойство StatusCode
на предмет допустимых значений.
Система WebException является отдельной системой от системы ошибок HTTP . Это в основном связано с тем, что ошибки HTTP возвращаются браузером или клиентом, а WebException генерируется сервером при создании вашей страницы. К моменту обнаружения ошибки HTTP страница отправляется клиенту, и вы не узнаете об этом.