2025년 4월 13일 일요일

4-2강: 복구 불가능한 오류

복구 불가능한 오류: 정상적으로 실행할 수 없는 상황
다양한 실행 법이 존재 한다. 
0으로 나누는 예제로 오류를 발생 시켜 보자.
fn div(a: i32, b: i32) -> i32 {
    a / b
}

fn main() {
    let ret = div(1, 0);
    println!("ret: {}", ret);
}

백트레이스 사용 실행(백트레이스란? 오류가 발생된 원인을 추적하는 기능)
(PowerShell) $env:RUST_BACKTRACE=1; cargo run
(WSL2 / macOS / Linux) RUST_BACKTRACE=1 cargo run

릴리즈 모드로 실행시 : 디버그 심벌은 제외
$env:RUST_BACKTRACE=1; cargo run --release

릴리즈 모드에서도 디버그 심벌을 탑재를 하고 싶으면
Cargo.toml 파일에서 다음과 같이 설정
[profile.release-with-debug] inherits = "release" debug = true

// 복구 불가능한 오류 발생
// panic! 매크로는 프로그램을 즉시 종료하고 설정된 메세지를 출력한다.
// panic! 매크로는 공식 가이드 페이지에서 명시하는 것을 권장한다.
fn div(a: i32, b: i32) -> i32 {
    if b == 0 {
        // panic! 는 복구 불가능한 오류를 일으키려고 할 때 쓰인다.
        panic!("0으로 나눌 수 없습니다.")
    }

    a / b
}

fn main() {
    let ret = div(1, 0);
    println!("ret: {}", ret);
}

/*실행 결과
thread 'main' panicked at main.rs:5:9:
0으로 나눌 수 없습니다.
*/

댓글 없음:

댓글 쓰기