여기에는 성능이 가장 중요한 관심사는 아닙니다. 문제는 더 읽기 쉽고 유지 보수 가능하며 테스트 할 수있는 프로그램으로 연결되는 것입니다. 나중에 성능에 대해 걱정할 수 있습니다.
일반적으로 흐름 제어에 예외를 사용하지 마십시오. 그들은 실제로 프로그램을 더 읽기 어렵게 만드는 비 국부적 인 goto
입니다. 따라서 예외적 인 상황을 대비하여 예약해야합니다. 흐름 제어를 위해 try-catch
블럭을 사용하지 않고 빠져 나갈 수 있다면 그렇게하지 마십시오. 귀하의 프로그램은보다 읽기 쉽고 유지 보수가 용이합니다.
이 상황을 처리 할 수있는 "오른쪽"방법은 someMethod
의 반환 값은 보장 계약 (Contract.Ensures
)이 있으면
var list = someMethod();
if(list == null || list.Length == 0) {
// handle something bad
}
string a = list[0];
if(a != null) {
// go
}
당신은 list
가 null과 비어 있지 아니라고 검사를 피할 수있다 null이 아니고 비어 있지 않습니다.
그러나 예외적으로 지역적으로 비용이 많이 듭니다. 프로그램의 성능에 영향을 주는지 (즉, 병목 현상인지) 여부는 다른 질문입니다. 그러나 적절히 사용하면 예외는 일반적으로 병목 현상이 아닙니다. 응용 프로그램이 충돌 할 때 성능에 신경을 쓴 사람은 누구입니까?
단어 "빠른"을 취소하십시오, 그것은 무의미합니다. 그리고 CLR을 사용하는 것이므로 try-catch를 사용하는 것은 올바른 방법이 아닙니다. – BoltClock
그냥 예를 들어 ... – carlosdubusm
@ BoltClock, 아니야. 예외가 발생하면 느리다. – CaffGeek