【发布时间】:2019-06-29 00:03:53
【问题描述】:
我有一个 C# Windows 应用程序,我正在使用以下代码调用 API:
while (true)
{
try
{
using (HttpRequestMessage requestMessage = new HttpRequestMessage(HttpMethod.Get, "Some URL"))
{
requestMessage.Headers.Add("Accept", "application/json");
response = await myHttpHelper.SendHttpRequest(requestMessage).ConfigureAwait(false);
}
break; // where the code smells is shown
}
catch (TaskCanceledException )
{
if (++attemptCount > 3)
{
throw;
}
Thread.Sleep(10000);
}
catch (Exception ex2)
{
throw;
}
}
通常情况下,一旦出现网络问题,对 API 的获取请求就会被取消。所以我所做的是每当任务被取消时,我都会尝试三遍。如果它不起作用,那么我会向调用方法抛出异常。如果这 3 次尝试都成功,我将打破循环。
现在,当我对我的代码运行声纳分析时,它显示要删除 break 语句并重构代码。我该怎么做?
【问题讨论】:
-
也许尝试在您的 while 循环中使用尝试计数?
-
我建议考虑使用
Polly。这比自己手动设置重试案例要容易得多。