首页 > 解决方案 > 为什么捕获 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)
{
}

在哪个代码路径上没有调用 dispose,为什么 catch/when 会影响事情?

注意:我使用的是 VS2015 的内置代码分析。CA2000 在托管二进制分析规则集中,并且(对我而言)默认情况下未选中新解决方案。(VS2017 也会发出同样的警告)

标签: c#asynchronousidisposableaggregateexception

解决方案


推荐阅读