2013-08-28 42 views
1

我正在扫描具有多条路径示例的单个网址:http://url.com/path11000。有时候,我得到一个WebException但在我catch块,它会抛出一个NullReferenceException错误,如果我不使用行
if (x.Status == WebExceptionStatus.ProtocolError && x.Response != null)WebException响应属性返回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()); 
     } 
    } 
} 
+0

哪一部分你不明白? – terrala7

+0

我正在用很多路径扫描1个url:http://url.com/path1到1000,但是如果我不使用if(x.Status == WebExceptionStatus.ProtocolError && x.Response!= null) '它会抛出'NullReferenceException'错误,所以是上面的代码修复错误或只是忽略它:) – terrala7

+2

我也不明白这个问题。我认为你需要改写它,因为你的英语不太好。此时不需要反对票。试着澄清它,让我们知道你到底想要什么。编辑问题,不要写额外的评论。 –

回答

4

根据对WebException.Response property

文档如果响应是从Internet资源,包含来自Internet资源的错误响应的WebResponse 实例; 否则,null

所以,如果我正确地理解你的问题,那么它是必要测试WebException.Responsenull,这意味着你的代码正确地避免了NullReferenceException而不是“忽略”了。

希望有所帮助。

+1

这意味着如果网站激活了返回将永远不会为空? – terrala7

0

当没有响应可用时,您的代码将忽略原始WebException。无论你的意思是将这些故障添加到列表框中,就像有故障的故障一样,是由你自己决定的

+0

哪些代码用于忽略代码? – terrala7

+0

你有'if'而不是'else'的部分 –