(я понимаю, что вопрос старый, но он входит в число самых популярных в Google.)
Распространенная ситуация, когда вы хотите знать код ответа, связана с обработкой исключений. Начиная с C # 7, вы можете использовать сопоставление с шаблоном для фактического ввода предложения catch, только если исключение соответствует вашему предикату:
catch (WebException ex) when (ex.Response is HttpWebResponse response)
{
doSomething(response.StatusCode)
}
Это может быть легко расширено до следующих уровней, например, в этом случае, когда WebException
был фактически внутренним исключением другого (а нас интересует только 404
):
catch (StorageException ex) when (ex.InnerException is WebException wex && wex.Response is HttpWebResponse r && r.StatusCode == HttpStatusCode.NotFound)
Наконец: обратите внимание, что нет необходимости перебрасывать исключение в предложении catch, если оно не соответствует вашим критериям, поскольку мы не вводим предложение в первую очередь с помощью вышеуказанного решения.