에러 처리는 모든 프로그래밍 언어에서 중요한 주제 중 하나입니다. Rust에서는 Result와 Option 타입을 사용하여 에러 처리를 합니다. Result는 성공 또는 실패의 결과를 반환하는 타입이고, Option은 값이 있거나 없음을 나타내는 타입입니다.
다음은 Result와 Option 타입을 사용하여 에러 처리하는 예제 코드입니다.
fn parse_number(s: &str) -> Result<i32, std::num::ParseIntError> {
s.parse::<i32>()
}
fn main() {
let result = parse_number("123");
match result {
Ok(num) => println!("Number: {}", num),
Err(e) => println!("Error: {}", e),
}
let option = Some("Hello, world!");
match option {
Some(s) => println!("{}", s),
None => println!("None"),
}
}
Rust
복사
위 코드에서 parse_number 함수는 문자열을 정수로 변환하고, 변환 결과를 Result 타입으로 반환합니다. main 함수에서는 parse_number 함수를 호출하고, 반환된 Result 타입을 match 표현식을 사용하여 처리합니다. 마찬가지로, Option 타입도 match 표현식을 사용하여 처리할 수 있습니다.
다음은 에러 처리를 위해 패닉과 Result를 사용하는 예제입니다.
fn divide(a: i32, b: i32) -> Result<i32, &'static str> {
if b == 0 {
Err("Cannot divide by zero")
} else {
Ok(a / b)
}
}
fn main() {
let result = divide(10, 0);
match result {
Ok(num) => println!("Result: {}", num),
Err(e) => panic!(e),
}
}
Rust
복사
위 코드에서 divide 함수는 두 개의 정수를 받아서 나눈 결과를 Result 타입으로 반환합니다. 만약 두 번째 인자로 0이 전달되면, 함수는 에러를 발생시키고, 그렇지 않으면 결과를 반환합니다. main 함수에서는 divide 함수를 호출하고, 반환된 Result 타입을 match 표현식을 사용하여 처리합니다. 만약 함수에서 에러가 발생하면, panic! 매크로를 사용하여 프로그램이 종료되도록 합니다.
에러 처리는 코드의 안정성을 보장하는 데 매우 중요합니다. Rust에서는 Result와 Option 타입을 사용하여 안정적인 에러 처리를 할 수 있습니다. 에러 처리를 위한 Result와 Option 타입을 올바르게 사용하는 방법을 익혀야 하며, 필요한 경우 패닉을 사용하여 예외 상황을 처리할 수 있도록 연습해야 합니다. 이를 통해 안정적이고 예측 가능한 코드를 작성할 수 있습니다.