계약 위반을 감지한다
인자 범위, 파일 포맷, 상태 전이 조건이 맞지 않을 때 정상 반환으로 숨기지 않는다.
throw는 단순한 탈출문이 아니다. 호출자가 이해할 수 있는 타입, 메시지, 보존된 상태가 함께 있어야 예외가 복구 가능한 정보가 된다.
인자 범위, 파일 포맷, 상태 전이 조건이 맞지 않을 때 정상 반환으로 숨기지 않는다.
호출자가 다르게 처리해야 하는 실패라면 예외 타입도 다르게 둔다.
지역 자원은 RAII에 맡기고, 멤버 상태는 커밋 전 임시 객체에 모아 둔다.
if (index >= values.size()) {
throw std::out_of_range("index outside values range");
}
return values[index];