using(YourType yourObject = new YourType())
{
//Treatment on you object
//Exception occurs here
}
当我们这样写时,垃圾收集器会自动处理对象,但是如果在这里面发生异常,垃圾收集器仍然会处理对象或者我必须为它写点东西,我知道这是一个蹩脚的 q 但我真的很困惑,thnx
请解释不同 .net 框架中的处理方式,以使事情一目了然。
using(YourType yourObject = new YourType())
{
//Treatment on you object
//Exception occurs here
}
当我们这样写时,垃圾收集器会自动处理对象,但是如果在这里面发生异常,垃圾收集器仍然会处理对象或者我必须为它写点东西,我知道这是一个蹩脚的 q 但我真的很困惑,thnx
请解释不同 .net 框架中的处理方式,以使事情一目了然。
是的,using 块仍然会调用Dispose
异常。请参阅MSDN 文档。
using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。
还有另一篇有用的文章避免使用语句出现问题。
来自MSDN 文档
using 语句可确保调用 Dispose,即使在调用对象上的方法时发生异常也是如此。您可以通过将对象放在 try 块中,然后在 finally 块中调用 Dispose 来获得相同的结果;事实上,这就是编译器翻译 using 语句的方式。
using (var object = new Object())
{
object.DoSomething();
}
等于:
var object = new Object();
try
{
object.DoSomething();
}
finally
{
object.Dispose();
}