遇到异常时,此对象是否会自动处理?

时间:2012-08-01 13:40:58

标签: c# .net garbage-collection

using(YourType yourObject = new YourType())
{
   //Treatment on you object 
   //Exception occurs here
}

当我们这样编写时,垃圾收集器会自动处理对象,但是在这里会发生异常,垃圾收集器仍然会处理对象,或者我必须为它写一些东西,我知道这是一个蹩脚的q但是我真的困惑,thnx

请在不同的.net框架中解释处理,以使事情变得清晰。

2 个答案:

答案 0 :(得分:9)

是的,使用块仍会在异常时调用Dispose。请参阅MSDN documentation

  

using语句确保即使在对象上调用方法时发生异常,也会调用Dispose。

另一篇有用的文章Avoiding Problems with the Using Statement

答案 1 :(得分:1)

来自MSDN Documentation

  

using语句确保即使调用Dispose也会调用   在对象上调用方法时发生异常。您可以   通过将对象放在try块中来实现相同的结果   然后在finally块中调用Dispose;其实这是怎么回事   using语句由编译器翻译。

using (var object = new Object())
{
    object.DoSomething();
}

等于:

var object = new Object();
try
{
     object.DoSomething();
}
finally
{
    object.Dispose();
}