# Function std::panic::set_hook

1.10.0 · source ·

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

Expand description

Registers a custom panic hook, replacing the previously registered hook.

The panic hook is invoked when a thread panics, but before the panic runtime is invoked. As such, the hook will run with both the aborting and unwinding runtimes.

The default hook, which is registered at startup, prints a message to standard error and generates a backtrace if requested. This behavior can be customized using the `set_hook` function. The current hook can be retrieved while reinstating the default hook with the `take_hook` function.

The hook is provided with a `PanicInfo` struct which contains information about the origin of the panic, including the payload passed to `panic!` and the source code location from which the panic originated.

The panic hook is a global resource.

## Panics

Panics if called from a panicking thread.

## Examples

The following will print “Custom panic hook”:

ⓘ

    use std::panic;

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

    panic!("Normal panic");

Run