Rust自定义panic信息
在Rust里,默认情况下:panic!
宏可以用来触发一个panic,它会立即终止当前执行的函数,并开始展开[unwinding]
当前线程的调用栈,清理每个栈帧中的数据,清理完成后,它会终止当前运行的进程。
Panic的处理过程
Rust的错误处理流程如下图所示:
其中 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
这个词,不会输出其它的信息