gpt4 book ai didi

c# - 尝试没有捕获 WebException

转载 作者:行者123 更新时间:2023-11-30 22:19:15 24 4
gpt4 key购买 nike

我有以下功能将通过代理获取某些网站的 html 源,它工作正常,除了有时服务器返回 503(服务器不可用)或它永远不会进入 catch 语句的任何其他异常。

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

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 语句?

最佳答案

它可能返回一个非 WebException 类型的异常。要在阳光下捕获所有异常,您必须将“catch Exception”作为后备

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

关于c# - 尝试没有捕获 WebException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15674914/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com