【发布时间】: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