相关疑难解决方法(0)

如何处理从Dispose抛出的异常?

最近,我正在研究一些关于没有处理的对象的棘手错误.

我在代码中找到了一些模式.据报道,有些m_foo没有被处理,而似乎SomeClass的所有实例都被处理掉了.

public class SomeClass: IDisposable
{
    void Dispose()
    {
       if (m_foo != null)
       {
          m_foo.Dispose();
       }
       if (m_bar != null)
       {
          m_bar.Dispose();
       }   
    }

    private Foo m_foo;

    private Bar m_bar;

}
Run Code Online (Sandbox Code Playgroud)

我怀疑Foo.Dispose可能会抛出异常,因此不会执行以下代码,因此不会释放m_bar.

由于Foo/Bar可能来自第三方,因此不保证不会抛出异常.

如果只使用try-catch包装所有Dispose调用,代码将变得笨拙.

处理这个问题的最佳做法是什么?

.net dispose idisposable

19
推荐指数
3
解决办法
2万
查看次数

标签 统计

.net ×1

dispose ×1

idisposable ×1