Function std::panic::update_hook

source ·
pub fn update_hook<F>(hook_fn: F)where
    F: Fn(&(dyn Fn(&PanicInfo<'_>) + Send + Sync + 'static), &PanicInfo<'_>) + Sync + Send + 'static,
🔬This is a nightly-only experimental API. (panic_update_hook #92649)
Expand description

take_hookset_hook 的原子组合。 使用它来用一个新的 panic 处理程序替换 panic 处理程序,该处理程序会做一些事情然后执行旧的处理程序。

Panics

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

Examples

下面会打印自定义消息,然后正常输出 panic。

#![feature(panic_update_hook)]
use std::panic;

// 相当于
// let prev = panic::take_hook();
// panic::set_hook(move |info| {
//     println!("...");
//     prev(info);
// );
panic::update_hook(move |prev, info| {
    println!("Print custom message and execute panic handler as usual");
    prev(info);
});

panic!("Custom and then normal");
Run