Notice
Recent Posts
Recent Comments
NeuroWhAI의 잡블로그
[Rust] panic 감지하여 잡기(catch) 본문
panic은 Rust의 매크로로서 프로그램이 복구할 수 없는 오류에 빠졌을 때 프로그램을 즉시 종료하고 디버깅에 필요한 정보를 제공하는 기능을 합니다.
Rust는 panic이 일어난 것을 감지할 수 있는 기능도 제공합니다.
use std::panic;
fn main() {
let result = panic::catch_unwind(|| -> i32 {
println!("good");
"42".parse().unwrap()
});
println!("{:?}", result);
let result = panic::catch_unwind(|| -> i32 {
println!("bad");
"AaaaaAAaaaAAAaaAAAAaAAAAA".parse().unwrap()
});
println!("{:?}", result);
println!("END!");
}
good Ok(42) bad Err(Any) END!
이렇게요.
bad이후 panic이 발생할테지만 프로그램이 종료되지 않고 끝까지 수행되는 것을 볼 수 있습니다.
catch_unwind의 반환형은 std::thread::Result이고 이를 통해 내부의 반환값이나 에러를 얻을 수도 있습니다.
'개발 및 공부 > 언어' 카테고리의 다른 글
[Rust] AsRef와 Borrow trait의 차이 (0) | 2019.01.23 |
---|---|
[Rust] 패턴 매칭 바인딩 모드(Binding Modes) 설명 (0) | 2019.01.20 |
[Rust] turbofish - 제너릭 타입 지정 문법 (0) | 2019.01.10 |
[Rust] macro_use 불필요! (0) | 2018.12.28 |
[Rust] wrapping으로 오버플로/언더플로 에러 피하기 (0) | 2018.12.19 |
Comments