16.3 Result

Result 는 고급진 버전의 Option 타입으로 가능한 공백 대신 가능한 에러를 설명한다.

즉, Result<T, E>는 다음 두 결과 중에 하나를 갖게 된다.

  • Ok<T>: 한 요소 T 가 왔을 시.
  • Err<E>: 요소 E로 에러가 왔을 시.

규칙에 따라, 예상되는 결과는 Ok 그렇지 않은 경우는 Err로 나타낸다.

Option처럼, Result는 관련된 많은 메소드를 가졌다. unwrap()을 예로 들면, 요소 TPanic들을 생성한다. 사례 처리를 위해 많은 연결자가 ResultOption에 중복하여 존재한다.

Rust로 작업할 시에, parse() 메소드 같은 Result 타입을 반환하는 메소드를 직면하게 될 것이다. 항상 string을 다른 타입으로 변경할 수 있는건 아니기에 parse()Result를 반환해 가능한 실패를 나타낸다.

string의 parse() 성공과 실패 시에 어떤 일이 일어나는지 살펴보자:

fn double_number(number_str: &str) -> i32 {
    // Let's try using `unwrap()` to get the number out. Will it bite us?
    2 * number_str.parse::<i32>().unwrap()
}

fn main() {
    let twenty = double_number("10");
    println!("double is {}", twenty);

    let tt = double_number("t");
    println!("double is {}", tt);
}

성공하지 못한 경우에, parse()unwrap()시에 panic이 발생해 에러를 내고 종료된다. 추가로, panic은 불쾌한 에러 메시지를 제공하고 프로그램을 종료시킨다.

우리가 에러 메시지의 품질을 향승시키기 위해, 우리는 반환 타입을 보다 명확히 하고, 명시적 에러 처리를 고려해야 한다.

results matching ""

    No results matching ""