Почему перехват AggregateException вызывает предупреждение CA2000?

Код ниже вызывает предупреждение анализа кода CA2000, утверждая, что мне нужно избавиться от getRequest вдоль всех путей кода, прежде чем он выходит из области видимости. Немного подправив код, например, удалив when от catch, устраняет предупреждение.

try
{
    using (var getRequest = new HttpRequestMessage(HttpMethod.Get, uri))
    {
        using (var result = client.SendAsync(getRequest).Result)
        {
        }
    }
}
catch (AggregateException exc) when (exc.InnerExceptions.Count >= 0)
{
}

На какой путь кода удаляется, не вызывается, и почему catch/when влияет на вещи?

Примечание: я использую встроенный анализ кода VS2015. CA2000 входит в набор правил управляемого бинарного анализа и (для меня) по умолчанию не проверяется для новых решений. (VS2017 также выдает те же предупреждения)

0 ответов

Другие вопросы по тегам