This crate provides convenient API for obtaining panic info after unwinding
let result = catch_panic(|| {
panic!("Something bad happened!");
});
if let Err(panic) = result {
eprintln!("{}", panic.display_with_backtrace());
}
This will either produce normal result of closure or or conveniently gathered panic info, which includes panic location, message, raw payload and backtrace
hook
- raw scoped hook APIspanic
- all types and functions relevant to capturing panics, including some advanced features
Project uses cargo-xtask
pattern.
Run cargo xtask
to see available commands
They're located in a separate unpublished subcrate. This is because most of them need to execute certain test case binary as a separate process and then analyze its output
Crate doesn't have separate feature nightly
. Instead, it uses toolchain detection to automatically determine
whether to use nightly features or not.
While API remains the same, some internal behaviors are changed
- Global hook used to support scoped hooks is installed atomically,
using
update_hook
instead oftake_hook
+set_hook
- No-unwind panics are handled more correctly. In particular, if no-unwind panic happens as the first one, you'll see panic details anyway.
- Backtrace print style used inside hook in no-unwind case is taken from
std::panic::get_backtrace_style
and is not hardcoded to short
These tweaks will be hopefully moved to stable version when related features are stabilized