CA2000:对象没有沿着所有异常路径被处理

本文关键字:异常 路径 处理 对象 CA2000 | 更新日期: 2023-09-27 18:03:01

虽然这个话题之前已经在这里讨论过了,但是所提出的解决方案似乎并不奏效。

在我的表单应用程序中有一个button-click-callback方法,它显示了一个文件夹选择器对话框:

private void ButtonSelectReporterFolderClick(object sender, EventArgs e)
{
    using (var dialog = new FolderBrowserDialog()) // causes warning
    {
        if (dialog.ShowDialog() == DialogResult.OK)
        {
            this.boxReporterFolderPath.Text = dialog.SelectedPath;
        }
    }
}

这会产生一个警告:

CA2000: Microsoft.Reliability : In method 'MainWindow.ButtonSelectReporterFolderClick(object, EventArgs)', object '<>g__initLocal' is not disposed along all exception paths. Call System.IDisposable.Dispose on object '<>g__initLocal' before all references to it are out of scope.

我还尝试使用try - finally块甚至呼叫对话框。在没有任何块的情况下进行处理,所有这些都无济于事——警告始终保留在初始化行。

CA2000:对象没有沿着所有异常路径被处理

这个警告不是因为FolderBrowserDialog没有被处置,而是因为它有一些实现了IDisposable接口的公共成员,而你没有单独处置它们。当然,FolderBrowserDialog对象知道如何处置它的依赖,但FxCop没有办法知道,所以它给出了一个警告。