Error Strategy

예외는 정상 흐름과 실패 처리를 분리합니다

반환값, 오류 코드, 예외는 모두 실패를 알릴 수 있지만 호출자가 어떤 책임을 가져야 하는지에 따라 적합한 방식이 달라집니다.

예외 후보파일 열기 실패, 메모리 부족처럼 즉시 복구하기 어려운 상황입니다.
일반 반환검색 실패처럼 정상적인 결과 중 하나라면 값으로 표현할 수 있습니다.
return

예상 가능한 결과를 돌려줍니다

값이 없을 수 있는 탐색은 선택적 반환이나 상태값으로도 충분합니다.

code

실패 원인을 수동 확인합니다

오류 코드는 단순하지만 호출자가 매번 확인하지 않으면 쉽게 누락됩니다.

throw

처리 지점까지 전파합니다

실패 감지 지점과 복구 지점이 다르면 예외가 호출 경계를 넘어 실패 정보를 운반합니다.

전파중간 함수가 실패를 이해하지 못해도 상위 처리자까지 올라갈 수 있습니다.
소유자 추적스택 풀기 중 지역 객체 소멸자가 호출되어 RAII 자원을 해제합니다.
일반 분기 금지반복문의 일반 분기처럼 자주 일어나는 흐름에는 예외를 쓰지 않습니다.

실패 경계 예외 처리는 오류를 숨기는 장치가 아니라 실패를 처리 가능한 경계까지 전달하는 구조입니다.