WebException Response属性返回null

时间:2013-08-28 23:21:58

标签: c# .net error-handling httpwebresponse

我正在扫描一个包含多个路径示例的网址:http://url.com/path11000。有时我会收到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 个答案:

答案 0 :(得分:5)

根据WebException.Response property

的文件
  

如果可以从Internet资源获得响应,则为WebResponse   包含来自Internet资源的错误响应的实例;   否则, null

因此,如果我正确理解了您的问题,那么是必要的来测试WebException.Response的{​​{1}},这意味着您的代码正确地避免了null而不是'忽视'它。

希望有所帮助。

答案 1 :(得分:0)

当没有可用响应时,您的代码忽略了原始WebException。是否意味着将这些故障添加到listBox,就像确实有响应的故障由你决定