c# - 为什么捕获 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 也会发出同样的警告)
解决方案
推荐阅读
- javascript - 用 JavaScript 中的 RegExp 在一行中解析电子邮件;使右不区分大小写但保持左
- linux - aarch64 Linux 硬浮点或软浮点
- python - 使用 XArray 数据集重现 Holoviews 示例 box_draw_roi_editor
- java - 是否有任何查询来查找 Firebase 数据库(Android Studio)中同名的孩子的数量总和?
- javascript - 有没有办法在 javascript 的 get 方法中请求多个 url?
- postgresql - 容器是数据库服务器。容器启动后,如何要求它的 Dockerfile 完成构建?
- go - 如何在 Go 中为外部 HTML 模板设置变量?
- c++ - 程序员定义的异常类问题
- kentico - Kentico - 无法以“DD/MM/YYYY”格式保存日期时间
- python - 如何仅从新列表中删除元素