Skip to content

Commit 61e5d54

Browse files
committed
Add more information about panicking
This includes the description of the default `std` behavior and mentions the `panic::set_hook()` function.
1 parent 55d9e0f commit 61e5d54

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

library/core/src/macros/panic.md

+9-5
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,14 @@ tests. `panic!` is closely tied with the `unwrap` method of both
99
[`Option`][ounwrap] and [`Result`][runwrap] enums. Both implementations call
1010
`panic!` when they are set to [`None`] or [`Err`] variants.
1111

12-
This macro is used to inject panic into a Rust thread, causing the thread to
13-
panic entirely. The string built by this macro (using the [`format!`] syntax
14-
for building the actual message) is printed to `stderr`.
15-
16-
Each thread's panic can be reaped as the [`Box`]`<`[`Any`]`>` type,
12+
When using `panic!()` you can specify a string payload, that is built using
13+
the [`format!`] syntax. That payload is used when injecting the panic into
14+
the calling Rust thread, causing the thread to panic entirely.
15+
16+
The default `std` panic handling strategy is to print the message payload to
17+
the `stderr` along with the file/line/column information of the `panic!()`
18+
call. You can override the panic hook using [`std::panic::set_hook()`].
19+
Inside the hook a panic can be reaped as the [`Box`]`<`[`Any`]`>` type,
1720
which contains either a `&str` or `String` for regular `panic!()` invocations.
1821
To panic with a value of another other type, [`panic_any`] can be used.
1922

@@ -26,6 +29,7 @@ See also the macro [`compile_error!`], for raising errors during compilation.
2629

2730
[ounwrap]: Option::unwrap
2831
[runwrap]: Result::unwrap
32+
[`std::panic::set_hook()`]: ../std/panic/fn.set_hook.html
2933
[`panic_any`]: ../std/panic/fn.panic_any.html
3034
[`Box`]: ../std/boxed/struct.Box.html
3135
[`Any`]: crate::any::Any

0 commit comments

Comments
 (0)