捕获堆栈展开

默认情况下,panic 会导致堆栈展开。您可以捕获展开信息:

use std::panic;

fn main() {
    let result = panic::catch_unwind(|| {
        println!("hello!");
    });
    assert!(result.is_ok());
    
    let result = panic::catch_unwind(|| {
        panic!("oh no!");
    });
    assert!(result.is_err());
}
  • 如果服务器需要持续运行(即使是在请求发生崩溃的情况下), 此方法十分有用。
  • 如果您在 Cargo.toml 中设置了 panic = 'abort',此方法不会生效。