위험 구간을 묶는다
파일 열기, 파싱, 네트워크 호출처럼 실패 출처가 있는 코드를 try 안에 둔다.
try 블록은 위험한 호출을 묶고 catch는 처리 가능한 실패만 잡는다. 너무 넓게 잡으면 원인 위치가 흐려지고, 너무 낮게 잡으면 정책이 흩어진다.
파일 열기, 파싱, 네트워크 호출처럼 실패 출처가 있는 코드를 try 안에 둔다.
derived exception을 먼저 처리하고 마지막에 std::exception 참조로 공통 처리를 둔다.
재시도, 기본값, 사용자 메시지, 프로그램 종료 중 어느 처리인지 catch 안에서 명확히 한다.
try {
parse_file(path);
} catch (const ParseError& e) {
show_line_error(e);
} catch (const std::exception& e) {
log_error(e.what());
throw;
}