Атрибут ответа 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, когда ответ недоступен. Хотите ли вы добавить эти сбои в список, как сбои, на которые есть ответ, решать только вам