首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >try未捕获WebException

try未捕获WebException
EN

Stack Overflow用户
提问于 2013-03-28 13:34:21
回答 1查看 2.4K关注 0票数 2

我有下面的函数将通过代理给我一些网站的html源代码,它的工作正常,除了一些时候,服务器返回503(服务器不可用)或任何其他异常,它从来没有进入catch语句。

在catch语句中,假设函数递归地调用自己,最多调用4次,如果请求在4次尝试后仍然失败,则返回null。

代码语言:javascript
复制
private static string GetPageHTML(string link,bool useprx)
            {
                int tryCount = 0;
                WebClient client = new WebClient() { Proxy = new WebProxy(ProxyManager.GetProxy()) { Credentials = new NetworkCredential("xx", "xx") } };

                try
                {
                return client.DownloadString(link);
                }
                catch (WebException ex)
                {
                    var statuscode = ((HttpWebResponse)ex.Response).StatusCode;
                    {

                        if (tryCount == 3)
                        {
                            return null;
                        }

                        switch (statuscode)
                        {
                            case (HttpStatusCode.Forbidden):
                                tryCount++;
                                System.Threading.Thread.Sleep(5000); 
                                return GetPageHTML(link, useprx); 

                            case (HttpStatusCode.NotFound): 
                                return null; 


                            case (HttpStatusCode.GatewayTimeout):
                                tryCount++;
                                System.Threading.Thread.Sleep(5000); 
                                return GetPageHTML(link, useprx); 


                            case (HttpStatusCode.ServiceUnavailable) :
                                 tryCount++;
                                System.Threading.Thread.Sleep(5000); 
                                return GetPageHTML(link, useprx);

                            default: return null;

                        }
                    }
                }
            }

那么为什么它从来不会进入catch语句呢?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-03-28 13:38:04

它可能返回一个不属于WebException类型的异常。要捕获太阳下的所有异常,您必须包括“捕获异常”作为备用方法

在WebException捕获之后添加回退捕获,并对其进行调试,以查看它真正返回的异常类型

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15674914

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档