假设构造函数和进程方法可能抛出异常,那么使用可丢弃对象的最佳方法是什么?我通常更喜欢下面的一个实现。
使用块尝试捕获周围
try
{
using (Disposable dispObj = new Disposable())
{
dispObj.Process();
}
}
catch (Exception ex)
{
// Do something
}
试着抓住最后一个街区。
Disposable dispObj2 = null;
try
{
dispObj2 = new Disposable();
dispObj2.Process();
}
catch (Exception ex)
{
// Do something
}
finally
{
if (dispObj2 != null)
{
dispObj2.Dispose();
}
}
更新:
再次声明:“假设constructor和process方法可能抛出异常”。我真的不明白为什么没有人关心他们的答案中的例外。
最佳答案
using
很好。它有一个内置的try finally块。如果发生异常,将自动调用dispose方法。
这很好
using (Disposable dispObj = new Disposable())
{
dispObj.Process();
}