@@ -9,11 +9,15 @@ tests. `panic!` is closely tied with the `unwrap` method of both
9
9
[ ` Option ` ] [ ounwrap ] and [ ` Result ` ] [ runwrap ] enums. Both implementations call
10
10
` panic! ` when they are set to [ ` None ` ] or [ ` Err ` ] variants.
11
11
12
- This macro is used to inject panic into a Rust thread, causing the thread to
13
- panic entirely. This macro panics with a string and uses the [ ` format! ` ] syntax
14
- for building the message.
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 behavior of the default ` std ` hook, i.e. the code that runs directly
17
+ after the panic is invoked, is to print the message payload to
18
+ ` stderr ` along with the file/line/column information of the ` panic!() `
19
+ call. You can override the panic hook using [ ` std::panic::set_hook() ` ] .
20
+ Inside the hook a panic can be accessed as a ` &dyn Any + Send ` ,
17
21
which contains either a ` &str ` or ` String ` for regular ` panic!() ` invocations.
18
22
To panic with a value of another other type, [ ` panic_any ` ] can be used.
19
23
@@ -26,6 +30,7 @@ See also the macro [`compile_error!`], for raising errors during compilation.
26
30
27
31
[ ounwrap ] : Option::unwrap
28
32
[ runwrap ] : Result::unwrap
33
+ [ `std::panic::set_hook()` ] : ../std/panic/fn.set_hook.html
29
34
[ `panic_any` ] : ../std/panic/fn.panic_any.html
30
35
[ `Box` ] : ../std/boxed/struct.Box.html
31
36
[ `Any` ] : crate::any::Any
0 commit comments