에러 정책 결정표

에러 처리는 문법 선택이 아니라 호출자에게 어떤 선택권을 남길지, 어떤 값 보장을 타입에 넣을지 정하는 설계입니다.

이 실패를 누가 처리해야 하는가?
호출자가 복구 가능Result<T, E>?로 전달하거나 match로 처리
입력의 유효성을 보장ValidatedType::new생성 경계에서 한 번 검사
내부 계약이 깨짐panic! / expect계속 실행할 수 없는 버그
Result

예상 가능한 실패

잘못된 입력, 파일 없음, 네트워크 실패처럼 호출자가 대처할 수 있는 경우입니다.

panic!

계약 위반

계속 실행하면 안전하지 않거나 호출자 버그가 분명한 나쁜 상태입니다.

expect

컴파일러 밖의 근거

하드코딩된 값처럼 사람이 참이라고 아는 전제를 메시지로 남깁니다.

type

반복 검증 제거

커스텀 타입 생성자에서 유효성을 확인해 이후 함수가 안전한 값만 받게 합니다.

API를 설계할 때 묻는 질문

사용자 입력

잘못 들어올 수 있다면 정상적인 실패로 보고 Result를 반환합니다.

프로그래머 버그

계약을 어긴 호출이라면 개발 중 바로 드러나도록 패닉을 고려합니다.

안전 문제

범위 밖 접근처럼 더 진행하면 위험하면 즉시 멈추는 편이 낫습니다.

타입 불변식

1부터 100 같은 규칙은 생성자와 비공개 필드로 한곳에 모을 수 있습니다.