에러 핸들링
에러 핸들링은 실패 가능성을 처리하는 과정입니다. 예를 들어, 파일을 읽는 데 실패했는데도 그 잘못된 입력을 계속 사용하는 것은 분명히 문제가 될 것입니다. 이러한 에러를 인지하고 명시적으로 관리하면 프로그램의 나머지 부분을 다양한 함정으로부터 보호할 수 있습니다.
Rust에는 에러를 처리하는 다양한 방법이 있으며, 이는 이어지는 하위 장에서 설명합니다. 이들은 모두 어느 정도 미묘한 차이가 있으며 용도가 다릅니다. 일반적인 원칙은 다음과 같습니다:
명시적인 panic은 주로 테스트와 복구 불가능한 에러를 처리하는 데 유용합니다. 프로토타이핑을 할 때도 유용할 수 있는데, 예를 들어 아직 구현되지 않은 함수를 다룰 때 유용하지만, 그런 경우에는 더 설명적인 unimplemented를 사용하는 것이 좋습니다. 테스트에서 panic은 명시적으로 실패를 알리는 합리적인 방법입니다.
Option 타입은 값이 선택적이거나 값의 부재가 에러 상황이 아닐 때 사용됩니다. 예를 들어 디렉터리의 부모 - /와 C:는 부모가 없습니다. Option을 다룰 때, unwrap은 프로토타이핑이나 값이 반드시 존재한다고 절대적으로 확신할 수 있는 경우에 괜찮습니다. 하지만 expect는 무언가 잘못되었을 경우를 대비해 에러 메시지를 지정할 수 있게 해주므로 더 유용합니다.
무언가 잘못될 가능성이 있고 호출자가 그 문제를 처리해야 할 때는 Result를 사용하세요. Result에 대해서도 unwrap과 expect를 사용할 수 있지만 (테스트나 빠른 프로토타입이 아니라면 제발 그렇게 하지 마세요).
에러 핸들링에 대한 더 엄밀한 논의는 공식 도서의 에러 핸들링 섹션을 참조하세요.