예외 타입은 호출자의 선택지를 만든다
ValueError 같은 내장 예외가 실패의 큰 종류만 말한다면 도메인 예외는 “잔액 부족”, “인증 실패”처럼 처리 방법이 다른 상황을 구분해. 일반 프로그램 예외는 BaseException이 아니라 Exception을 상속해.
메시지보다 구조화된 정보를 남겨
계정, 요청값, 남은 값 같은 속성을 넣으면 호출자가 문자열을 해석하지 않고 복구할 수 있어. 여러 오류가 같은 방식으로 처리된다면 타입을 지나치게 쪼개지 말고 공통 기반과 속성을 써.
원인을 지우지 말고 번역해
raise NewError(...) from original은 낮은 층의 원인을 __cause__에 보존하면서 높은 층의 의미로 바꿔. 두 traceback이 함께 남아 진단할 수 있어.