考慮這個類:嵌套處置using語句
class Person : IDisposable
{
public Person(int age)
{
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
和驗證碼:
using (Person perosn = new Person(0))
{
using (Person child = new Person(1))
{
}
}
當運行這段代碼的輸出是在控制檯創建兩個Dispose
。
我改變類:
class Person : IDisposable
{
public Person(int age)
{
if (age == 1)
{
throw new Exception("Person");
}
}
public void Dispose()
{
Console.WriteLine("Dispose");
}
}
我得到例外,這兩個類不處理。
那麼,爲什麼當我扔在孩子的構造新的例外,這兩個類沒有設置?
這不值錢upvotes的問題是提供錯誤的信息。 –
無法重現。當內部構造函數拋出異常時我仍然看到使用正確處理類的外層。 – LeffeBrune
一些有用的閱讀就是埃裏克利珀的有關異常的相互作用和'using'報表信息[這裏](http://blog.coverity.com/2014/02/26/resources-vs-exceptions/#.UxQ2bnVdWlg)。 –