Catch Order

catch는 구체 타입에서 일반 타입으로 씁니다

예외 처리자는 위에서 아래로 검사되므로, 부모 타입을 먼저 잡으면 자식 타입을 위한 처리 블록은 도달하지 못합니다.

권장 형태catch (const std::exception& e)처럼 참조로 받아 복사와 잘림을 피합니다.
이후 흐름처리 후 계속할지, 다시 던질지, 종료할지 명확히 정합니다.
try

실패 가능 구간만 감쌉니다

너무 넓은 try는 어느 호출이 실패했는지 흐리게 만듭니다.

specific

구체 예외 처리 순서

out_of_range 같은 좁은 타입을 먼저 처리하고 일반 타입은 뒤에 둡니다.

fallback

마지막 처리를 둡니다

catch (...)는 로그, 정리, 재전파처럼 제한된 목적으로 사용합니다.

복구 가능대체 입력, 재시도, 기본값으로 정상 흐름을 이어 갑니다.
복구 불가문맥을 붙여 다시 던지거나 상위 계층에 책임을 넘깁니다.
정보 보존what() 메시지와 원인 타입을 로그에 남깁니다.

실패 경계 try-catch는 모든 오류를 삼키는 구조가 아니라 실패 지점과 복구 지점을 연결하는 경계입니다.