【问题标题】:Adding a catch to ignore 404 web exception (C#)添加一个 catch 以忽略 404 Web 异常(C#)
【发布时间】:2015-11-12 19:46:28
【问题描述】:

我正在编写一个应用程序来抓取我的网站以获取关键字。我遇到了一个问题,如果我尝试阅读一个没有通过的页面,我会得到 404(不是问题)。

但是,当我的应用遇到 404 网络异常时,它不会继续。我知道我需要尝试和捕获,但我不太清楚如何正确添加 404 webexception 捕获而不会出错。 这是有问题的代码sn-p:我认为我的问题是我不知道在哪里正确放置try/catch,因为我有返回源;我得到一个错误,当我添加一个 catch 时它没有返回一个值。

string url = string.Format(@"http://127.0.0.1/website/" + searchterm);

HttpWebRequest req = (HttpWebRequest)HttpWebRequest.Create(url);
req.Method = "GET";
req.UserAgent = "MoZilla/5.0 (Windows; U; MSIE 9.0; WIndows NT 9.0; en-US))";

Uri target = req.RequestUri;
string source;

using (StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream()))
{
    source = reader.ReadToEnd();
}
return source;

【问题讨论】:

  • How can I catch a 404? 的可能重复项(使用投票最高的答案,而不是接受的答案)
  • Alex 尝试了这种方法,但无法确定正确放置 catch 的位置,昨晚在 stackoverflow 上搜索了很长时间。 :(
  • John Saunders 的回答几乎是复制/粘贴/使用,有什么问题吗?
  • 因为我有退货源;在那里它似乎不想使用try / catch,当我向它添加try或catch时,我收到类似于(无返回值)我在“返回源”之前和之后添加catch的响应;"
  • 快速解决方法是在顶部声明 source=null 并在最后有一个返回它,如果调用代码返回一个 null 它就知道出了问题。这将隐藏所有可能的错误,因此更好的方法是返回源缓冲区和成功指示(作为 ref/out 参数)

标签: c# http-status-code-404 webexception


【解决方案1】:

感谢Alex K:

我忘了在顶部而不是底部声明source = "";

谢谢亚历克斯 K!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-05
    相关资源
    最近更新 更多