using
문을 사용하는 것이 좋습니다. 그러나 그것은 당신의 유일한 선택이 아닙니다. 구문 론적으로 "깨끗한"모양과 사용 편의성 때문에 개발자가 선호하는 경향이 있습니다.
중요한 것은 (무엇이 using
에서 항상 보장되는지) 무엇이든지간에 FileStream.Close
을 호출하고 있는지 확인하는 것입니다. 예외가 발생하면이 코드가 누락 될 수 있습니다. 따라서 적어도 전화를 finally
블록에 넣으십시오. 나 자신을 처리 오류를 쓰고 있어요 경우
개인적으로, 나는 try
/using
/catch
에 try
/catch
/finally
을 선호합니다. 이 finally
인 것을 선호하는 또 다른 시나리오는 여러 개의 IDisposable
개체로 작업하는 곳이며 깊은 중첩을 피하기를 원합니다. 다음 코드를 고려하십시오
try {
using (DisposableObject obj1 = GetDisposableObject()) {
// do something
using (DisposableObject obj2 = GetAnotherDisposableObject()) {
// do something else
using (DisposableObject obj3 = GetYetAnotherDisposableObject()) {
// do even more things
// this code is now quite nested
}
}
}
} catch (SomeException ex) {
// some error-handling magic
}
지금이 해당 비교 : 개인적으로
DisposableObject obj1 = null;
DisposableObject obj2 = null;
DisposableObject obj3 = null;
try {
obj1 = GetDisposableObject();
// do something
obj2 = GetAnotherDisposableObject();
// do something else
obj3 = GetYetAnotherDisposableObject();
// do even more things
// this code doesn't have to be nested
} catch (SomeException ex) {
// some error-handling magic
} finally {
if (obj3 != null) obj3.Dispose();
if (obj2 != null) obj2.Dispose();
if (obj1 != null) obj1.Dispose();
}
을, 나는 후자가 훨씬 더 읽을 수 찾을 수 있습니다.
분명히 개인적인 취향입니다. 위의 두 코드 샘플은 동일한 결과를 얻습니다.
사용중인 파일은 무엇입니까? – SLaks