실패 가능 구간만 감쌉니다
너무 넓은 try는 어느 호출이 실패했는지 흐리게 만듭니다.
예외 처리자는 위에서 아래로 검사되므로, 부모 타입을 먼저 잡으면 자식 타입을 위한 처리 블록은 도달하지 못합니다.
catch (const std::exception& e)처럼 참조로 받아
복사와 잘림을 피합니다.
너무 넓은 try는 어느 호출이 실패했는지 흐리게 만듭니다.
out_of_range 같은 좁은 타입을 먼저 처리하고 일반 타입은
뒤에 둡니다.
catch (...)는 로그, 정리, 재전파처럼 제한된 목적으로
사용합니다.
what() 메시지와 원인 타입을 로그에 남깁니다.
실패 경계 try-catch는 모든 오류를 삼키는
구조가 아니라 실패 지점과 복구 지점을 연결하는 경계입니다.