Function std::panic::set_hook

1.10.0 · source ·
pub fn set_hook(hook: Box<dyn Fn(&PanicInfo<'_>) + Sync + Send + 'static>)
Expand description

注册一个自定义的 panic hook,替换之前注册的 hook。

当线程发生 panic 时,但在调用 panic 运行时之前,会调用 panic 钩子。这样,钩子将与中止和展开运行时一起运行。

默认钩子在启动时注册,将消息打印到标准错误并在请求时生成回溯。可以使用 set_hook 函数自定义此行为。 可以在使用 take_hook 函数恢复默认钩子的同时检索当前钩子。

该钩子提供了一个 PanicInfo 结构体,该结构体包含有关 panic 的起源的信息,包括传递给 panic! 的有效载荷和包含 panic 起源的源代码位置。

panic 钩子是一个全局资源。

Panics

如果从 panic 线程调用,就会出现 panic。

Examples

以下将打印 “Custom panic hook”:

use std::panic;

panic::set_hook(Box::new(|_| {
    println!("Custom panic hook");
}));

panic!("Normal panic");
Run