下面的代码会引起代码分析警告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)
{
}
不调用哪个代码路径,为什么捕获/何时影响事物?
注意:我正在使用VS2015的内置代码分析。 CA2000位于托管二进制分析规则集中,并且(对于我来说)默认情况下未选中新的解决方案。 (VS2017也发出相同的警告)