gpt4 book ai didi

c# - 如何改进这种异常重试场景?

转载 作者:IT王子 更新时间:2023-10-29 04:29:15 27 4
gpt4 key购买 nike

我调用了一个 Web 服务方法,它是第 3 方并且在我的域之外。由于某种原因,Web 服务有时会因网关超时而失败。它是间歇性的,在尝试失败后直接调用它可以成功。

现在我陷入了编码困境,我有应该可以解决问题的代码,但代码看起来像业余时间,如下所示。

这真的是糟糕的代码,还是可以接受的用法?如果不能接受,我该如何改进?

观看时请尽量保持正脸。

try
{
MDO = OperationsWebService.MessageDownload(MI);
}
catch
{
try
{
MDO = OperationsWebService.MessageDownload(MI);
}
catch
{
try
{
MDO = OperationsWebService.MessageDownload(MI);
}
catch
{
try
{
MDO = OperationsWebService.MessageDownload(MI);
}
catch
{
try
{
MDO = OperationsWebService.MessageDownload(MI);
}
catch (Exception ex)
{
// 5 retries, ok now log and deal with the error.
}
}
}
}
}

最佳答案

你可以循环执行。

Exception firstEx = null;
for(int i=0; i<5; i++)
{
try
{
MDO = OperationsWebService.MessageDownload(MI);
firstEx = null;
break;
}
catch(Exception ex)
{
if (firstEx == null)
{
firstEx = ex;
}
Thread.Sleep(100 * (i + 1));
}
}
if (firstEx != null)
{
throw new Exception("WebService call failed after 5 retries.", firstEx);
}

关于c# - 如何改进这种异常重试场景?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2270271/

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