RESULT PROPAGATION

Result 전파 지점

? 연산자는 오류를 빨리 올려보내지만, 어떤 오류는 현재 계층에서 복구하고 어떤 오류는 context를 붙여 상위 계층으로 보내야 한다.

01

오류 종류 확인

파일 없음, 파싱 실패, 네트워크 timeout처럼 의미가 다른 오류를 구분한다.

error type
02

복구 가능성 판단

기본값으로 대체하거나 재시도할 수 있으면 match로 현재 계층에서 처리한다.

recover
03

전파

현재 계층이 해결할 수 없으면 ?로 호출자에게 올려보낸다.

propagate
04

맥락 추가

어떤 파일/요청/사용자 작업에서 실패했는지 context를 붙인다.

diagnostics
match
성공/실패를 명시 분기 복구 로직이 있거나 오류별 다른 처리가 필요할 때 적합하다.
local handling
?
오류를 호출자에게 전파 함수 반환 타입이 Result여야 하고 From 변환이 가능해야 한다.
early return
map/map_err
값 또는 오류만 변환 성공 값 가공과 오류 타입 변환을 체인 안에서 처리한다.
functional style
thiserror/anyhow
라이브러리/앱 오류 전략 라이브러리는 구체 enum, 애플리케이션 경계는 context 중심이 편하다.
error design

오류 품질

원인 보존 상위 오류로 바꿔도 원래 source error를 잃지 않아야 한다.
사용자 메시지 내부 디버그 정보와 사용자에게 보여줄 메시지를 분리한다.
panic 금지 예상 가능한 입력/IO 실패는 unwrap 대신 Result로 다룬다.