에러 처리

에러 처리

에러는 소프트웨어에서 피할 수 없는 현실이에요. 그래서 Rust는 뭔가 잘못됐을 때를 대비한 여러 기능을 제공하죠. 많은 경우 Rust는 코드가 컴파일되기 전에 에러의 가능성을 인지하고 어떤 조치를 취하도록 요구해요. 이 요구 덕분에, 코드를 운영 환경에 배포하기 전에 에러를 발견해서 적절히 처리하게 되므로 프로그램이 훨씬 견고해져요.

출처: The Rust Book

두 가지 큰 범주

Rust는 에러를 크게 두 가지 범주로 나눠요. **복구 가능한 에러(recoverable error)**와 **복구 불가능한 에러(unrecoverable error)**죠.

복구 가능한 에러, 예를 들어 파일을 찾을 수 없음(file not found) 같은 에러는 아마 사용자에게 문제를 알리고 연산을 다시 시도하고 싶을 거예요. 반면 복구 불가능한 에러는 배열의 끝을 넘어선 위치에 접근하려는 것처럼 늘 버그의 증상이라서, 프로그램을 즉시 멈추고 싶어요.

대부분의 언어는 이 두 종류의 에러를 구분하지 않고, 예외(exception) 같은 메커니즘으로 똑같이 처리해요. 그런데 Rust에는 예외가 없어요. 대신 복구 가능한 에러에는 Result<T, E> 타입을, 프로그램이 복구 불가능한 에러를 만나면 실행을 멈추는 panic! 매크로를 써요.

이 장에서는 먼저 panic! 호출을 다루고, 그다음에 Result<T, E> 값을 반환하는 방법을 설명할게요. 그리고 에러에서 복구를 시도할지 아니면 실행을 멈출지를 결정할 때 고려할 점도 함께 살펴볼 거예요.

더 알아보기 (Learn more)