410代码没有被捕获,而是抛出错误

时间:2013-06-14 12:03:01

标签: c# web-services http stream httpwebrequest

我得到的代码试图捕获410代码,但它在第一行抛出错误而没有通过其余的代码,

 HttpWebResponse response = (HttpWebResponse)request.GetResponse();

 if (response.StatusCode == HttpStatusCode.NotFound || response.StatusCode == HttpStatusCode.Gone)
            {

有没有什么方法可以捕获410以外的其他代码。

在下面的回答的帮助下回答代码

  try
            {
                HttpWebResponse response = (HttpWebResponse)request.GetResponse();
            }
            catch (WebException ex)
            {
               if (((HttpWebResponse)(ex.Response)).StatusCode == HttpStatusCode.NotFound || ((HttpWebResponse)(ex.Response)).StatusCode == HttpStatusCode.Gone)
                {

1 个答案:

答案 0 :(得分:2)

这就是GetResponse方法的工作原理。当它没有获得代码200时会引发异常。

尝试将request.GetResponse()置于try .. catch块中。抓住WebException。在catch子句中,当状态代码不是200时,您可以处理情况。

try 
{
    HttpWebResponse response = (HttpWebResponse)request.GetResponse();
} 
catch(Exception ex)
{
    var exStatusCode = ex.Code //check the status code against this
    var exResponse = ex.Response //use your response like this
}