Атрибут ответа WebException возвращает ноль

Я сканирую один URL, который имеет много путей, например: http://url.com/path1 в 1000, Иногда я получаю WebException но по моему catch блок, он бросит NullReferenceException ошибка, если я не использую линию
if (x.Status == WebExceptionStatus.ProtocolError && x.Response != null)

Поэтому мой вопрос заключается в следующем: исправляет ли приведенный ниже код ошибку или просто игнорирует ее?

Ошибка не имеет конкретного пути к ошибке, просто случайным образом http://url.com/path10 или любая другая ссылка спасибо:)

catch (WebException x)
{
    if (x.Status == WebExceptionStatus.ProtocolError && x.Response != null)
    {
        HttpWebResponse response = (HttpWebResponse)x.Response;
        if (response.StatusCode == HttpStatusCode.NotFound)
        {
           listBox3.Items.add(listBox1.Items[i].ToString());
        }
    }
}

2 ответа

Согласно документации для WebException.Response имущество

Если ответ доступен из интернет-ресурса, экземпляр WebResponse, который содержит ответ об ошибке из интернет-ресурса; в противном случае - ноль.

Итак, если я правильно понимаю ваш вопрос, то необходимо проверить WebException.Response за nullЭто означает, что ваш код правильно избегает NullReferenceException вместо того, чтобы "игнорировать" это.

Надеюсь, это поможет.

Ваш код игнорирует исходное исключение WebException, когда ответ недоступен. Хотите ли вы добавить эти сбои в список, как сбои, на которые есть ответ, решать только вам

Другие вопросы по тегам