Rust自定义panic信息

在Rust里,默认情况下:panic!宏可以用来触发一个panic,它会立即终止当前执行的函数,并开始展开[unwinding]当前线程的调用栈,清理每个栈帧中的数据,清理完成后,它会终止当前运行的进程。

Panic的处理过程

Rust的错误处理流程如下图所示:

rust-panic-process

其中 panic_impl 函数,由链接器在链接的时候,跟据不同的target链接到不同的处理。

自定义panic的处理

use std::panic;
use std::panic::PanicHookInfo;
use std::process;

fn main() {
    panic::set_hook(Box::new(panic_handler));
    panic!("version");
}

pub fn panic_handler(_panic_info: &PanicHookInfo) {
    println!("panic");
    process::exit(101);
}

以上代码的编译结果,只会输出 panic 这个词,不会输出其它的信息