catch ordering

구체적인 예외부터, 넓은 예외는 마지막에

`catch`는 위에서 아래로 한 번만 선택됩니다. 부모 타입을 먼저 쓰면 자식 타입 전용 처리는 도달하지 못합니다.

권장 순서

1

catch (const std::invalid_argument& e)

2

catch (const OutOfRangeException& e)

3

catch (const std::exception& e)

4

catch (...)

예외 처리 판단

match

던져진 실제 타입과 가장 가까운 처리 블록을 먼저 만날 수 있게 둡니다.

handle

선택된 `catch` 하나만 실행되고 나머지 `catch`는 건너뜁니다.

fallback

알 수 없는 예외는 `catch (...)`에서 최소한의 정리와 기록만 수행합니다.

원칙: `std::exception` 같은 부모 타입은 편리하지만 너무 앞에 두면 세부 예외의 의미가 사라집니다.