我已经阅读过这样的使用方式:
可以这样想:
using (myObject)
{
myObject.DoStuff();
}
可以这样想:
try
{
myObject.DoStuff();
}
finally
{
myobject.Dispose()
}
因此,如果myObject.DoStuff
抛出异常ExceptionA
,然后myObject.Dispose()
也抛出异常(ExceptionB),那么ExceptionA
将会丢失。(请参见这里的MSDN示例以获得更好的描述)。
这是否意味着,如果using块中的代码可能会抛出异常(这是大多数代码的情况?),那么使用using
语句就是一种不好的做法?
Dispose
函数抛出异常是什么意思? - Ben VoigtDispose
不能抛出异常,我是说它不应该这样做。那些对象是有问题的。幸运的是,Marc展示了一种用包装对象修复它们的方法。 - Ben Voigt