using 문은 예외를 캡처하지 않습니다.예외 캐칭.
1) 사용을 푸는하고 수동으로 구현 : 당신은 두 가지 선택이 예외를 포착하려면
void MyFunc()
{
StreamReader myReader = null;
try
{
myReader = new StreamReader(path);
//use myReader
}
catch (Exception e)
{
//do something with exception
}
finally
{
if (myReader != null)
myReader.Dispose();
}
}
또는 2) 계속 사용하고, 다른 시도의 catch 블록에서 포장을
void MyFunc()
{
try
{
using (StreamReader myReader = new StreamReader(path))
{
//use myReader
}
}
catch (Exception e)
{
//do something with exception
}
}
나에게 두 번째 것은 특히 흐름을 더 잘 설명하고 명시 적 선언, Null 검사 및 Dispose() 호출을 제거하기 때문에 여러 개의 using 문을 사용하는 경우 더 깔끔하게 보입니다.
그러나 실제로 중복되는 추가 캐치 오버 헤드로 인해 잘못 생각합니다.
표준 연습이란 무엇입니까?
두 번째 방법은 어떻게 중복됩니까? – Tim
특히 poll_ish 인 이유로 SO에 적합하지는 않지만, 후자가 반전 된 것을 선호합니다 (내부에서 try/catch). 그것은 나 자신을 수동으로 처리하는 것보다 일사량이 약간 더 많아 질 수 있다는 것을 전혀 신경 쓰지 않습니다. 그것은 나를 위해 일하는 것이 적어서, 처음부터'사용하기 '의 요점입니다. –
@ 팀 : IL이 두 가지 예외 처리 지점을 설정해야한다고 생각했습니다. 하나는 바깥 쪽 try를위한 것이고, 다른 하나는 암시 적 try를 사용하는 것입니다. – GazTheDestroyer