ExecuteReader
이 예외를 throw하면 IDataReader
이 처분되는 다음 코드 조각에서 어떻게 확인할 수 있습니까?using 문이 예외를 throw하면 IDisposable 개체를 어떻게 처리합니까?
using (IDataReader rdr = cmd.ExecuteReader())
{
// use it
}
그것은 (그것을 호출 할 인스턴스가 존재하지 않기 때문에)에 using
syntatic 설탕 폐기를 호출하지 않습니다 나에게 의미가 있습니다. 그러나 IDisposable을 구현하는 클래스에 의해 일반적으로 할당되는 부족한 리소스가 해제 될 것이라는 것을 어떻게 확신 할 수 있습니까?
ExecuteReader가 예외를 throw하면 IDataReader는 null이며 처리 할 필요가 없습니다. ExecuteReader 내의 관리되지 않는 리소스는 정리가 필요하므로 자체 finally 블록에서 처리해야합니다. – cjk