【问题标题】:WebException Response attribute returns nullWebException 响应属性返回 null
【发布时间】:2013-08-28 23:21:58
【问题描述】:

我正在扫描具有多个路径的单个 URL,例如: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());
        }
    }
}

【问题讨论】:

  • 哪一部分你不明白?
  • 我正在扫描 1 个带有多个路径的 url,例如:url.com/path1 到 1000,但如果我不使用 if (x.Status == WebExceptionStatus.ProtocolError && x.Response != null) 它会抛出 NullReferenceException 错误,所以上面的代码修复了错误或者只是忽略它:)
  • 我也不懂这个问题。我认为你需要改写它,因为你的英语不太好。在这一点上不需要反对票。试着澄清一下,让我们知道你到底想要什么。编辑问题,不要写额外的 cmets。
  • OK 更新了问题:)

标签: c# .net error-handling httpwebresponse


【解决方案1】:

根据WebException.Response property 的文档

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

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

希望对您有所帮助。

【讨论】:

  • 这是否意味着如果站点处于活动状态,则返回永远不会为空?
【解决方案2】:

当没有响应可用时,您的代码会忽略原始 WebException。您是否打算将这些故障添加到列表框中,例如确实有响应的故障由您决定

【讨论】:

  • 有“if”但没有“else”的部分
猜你喜欢
  • 2019-03-22
  • 2015-05-04
  • 2012-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 2013-05-10
  • 2019-07-17
相关资源
最近更新 更多