我是C#的新手。我注意到,当服务器返回其他任何200然后我得到一个C#WebResponse.GetResponse()在404页面上返回System.Net.WebException找不到
异常。下面是一个404错误的例子。
未处理的异常:System.Net.WebException:远程服务器返回错误:(404)未找到。
为什么C#会产生异常?这意味着我必须使用try/catch块。
我见过的例子都没有提到这个问题。
在此先感谢您的帮助。
我是C#的新手。我注意到,当服务器返回其他任何200然后我得到一个C#WebResponse.GetResponse()在404页面上返回System.Net.WebException找不到
异常。下面是一个404错误的例子。
未处理的异常:System.Net.WebException:远程服务器返回错误:(404)未找到。
为什么C#会产生异常?这意味着我必须使用try/catch块。
我见过的例子都没有提到这个问题。
在此先感谢您的帮助。
是的,您需要使用try/catch
块,因为GetResponse()会为范围4xx-5xx中的状态代码提供豁免。
try
{
response = (HttpWebResponse)request.GetResponse();
code = response.StatusCode;
}
catch (WebException we)
{
code = ((HttpWebResponse)we.Response).StatusCode;
}
是的,它引发了一个例外。但是您仍然可以从异常对象获取响应和状态。因此,使用try/catch,并在catch块中获取所需的信息。
当我尝试访问try块内的StatusCode时,似乎没有response.StatusCode。 – Smithy
如果你真的不想使用try-catch,我建议你阅读下面的文章:Fixing WebRequest’s desire to throw exceptions instead of returning status。
当我尝试访问try块内的StatusCode时,似乎没有response.StatusCode。 – Smithy