를 사용하여 중첩에 폐기고려,이 클래스를 문
이 코드 출력을 실행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");
}
}
나는 예외가 두 클래스는 처리하지 않습니다
나는 클래스를 변경합니다.
그렇다면 하위 생성자에서 새 예외를 throw 할 때 두 클래스가 모두 삭제되지 않습니다.
이try {
using (Person perosn = new Person(0))
{
using (Person child = new Person(1))
{
}
}
} catch {
Console.WriteLine("Caught exception");
}
출력 : 참조 유형에 대한
Dispose
Caught exception
질문이 잘못된 정보를 제공하기 때문에 이것은 많은 상향식의 가치가 없습니다. –
재생할 수 없습니다. 내부 사용의 생성자가 예외를 throw 할 때 나는 여전히 클래스의 폐기를 올바르게 사용하여 외부를 참조합니다. – LeffeBrune
유용한 도움말은 Eric Lippert의 예외 상호 작용 및 'using'문 [여기] (http://blog.coverity.com/2014/02/26/resources-vs-exceptions/#.UxQ2bnVdWlg)에 대한 게시물입니다. –