오류 경계

실패를 돌려줄지, 멈출지 먼저 나눈다

Rust의 panic은 예외 처리 도구가 아니라 더 진행하면 위험한 상태에서 실행을 끊는 신호다.

발생 전 선택

Result

호출자가 고칠 수 있음

파일 없음, 입력 오류, 네트워크 실패처럼 재시도나 안내가 가능하면 Result로 돌려준다.

실패가 정상 흐름으로 설명되는가
panic!

전제가 깨짐

범위 밖 인덱스, 내부 불변식 위반처럼 계속 실행하면 더 위험하면 panic으로 멈춘다.

panic 이후 런타임 경로

panic!

실행 중단

메시지를 남기고 현재 스레드의 정상 흐름을 끝낸다.

다음
unwind

스택 정리

기본값은 프레임을 되감으며 값의 정리 코드를 실행한다.

또는
abort

즉시 종료

panic = "abort" 설정은 정리 과정을 줄이고 바로 종료한다.

Result를 쓰는 경우

실패가 API 계약의 일부이고 호출자가 다른 선택을 할 수 있을 때.

backtrace를 읽는 위치

출력 위에서부터 내려가며 내 파일이 처음 등장하는 줄을 우선 확인한다.