에러 처리

에러는 소프트웨어에서의 어쩔 수 없는 현실이므로, 러스트는 무언가 잘못되는 상황을 다루기 위한 몇 가지 기능을 갖추고 있습니다. 대부분의 경우에서 러스트는 여러분에게 에러의 가능성을 인정하고 코드가 컴파일 되기 전에 어떤 행동을 취할 것을 요구합니다. 이러한 요구사항은 여러분의 코드를 제품으로써 배포하기 전에 에러를 발견하고 적절히 조치할 것이라고 보장함으로써 여러분의 프로그램을 더 강건하게 해 줍니다!

러스트는 에러를 복구 가능한 (recoverable) 에러와 복구 불가능한 (unrecoverable) 에러 두 가지 범주로 묶습니다. 파일을 찾을 수 없음 에러 같은 복구 가능한 에러에 대해서는 대부분의 경우 그저 사용자에게 문제를 보고하고 명령을 재시도하도록 하길 원합니다. 복구 불가능한 에러는 배열 끝을 넘어선 위치에 접근하는 경우처럼 언제나 버그의 증상이 나타나는 에러이며, 따라서 프로그램을 즉시 멈추기를 원합니다.

대부분의 언어는 예외 처리(exception)와 같은 메커니즘을 이용하여 이 두 종류의 에러를 구분하지 않고 같은 방식으로 처리합니다. 러스트에는 예외 처리 기능이 없습니다. 대신, 복구 가능한 에러를 위한 Result<T, E> 타입과 복구 불가능한 에러가 발생했을 때 프로그램을 종료하는 panic! 매크로가 있습니다. 이번 장에서는 panic!을 호출하는 것을 먼저 다룬 뒤, Result<T, E> 값을 반환하는 것에 관해 이야기하겠습니다. 추가로, 에러로부터 복구를 시도할지 아니면 실행을 멈출지를 결정할 때 고려할 것에 관해 탐구해 보겠습니다.