首页 > 解决方案 > 如何重构代码以删除 C# 应用程序中的 break 语句

问题描述

我有一个 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 语句并重构代码。我怎样才能做到这一点?

标签: c#sonarqubebreak

解决方案


while (true)是一个无限循环。相反,我宁愿使用(布尔)变量来签入while(). 这使您有机会将此变量设置为false并避免break.


推荐阅读