@@ -311,18 +311,19 @@ where
311311///
312312/// # Notes
313313///
314- /// This function **might not catch all panics** in Rust. A panic in Rust is not
315- /// always implemented via unwinding, but can be implemented by aborting the
316- /// process as well. This function *only* catches unwinding panics, not those
317- /// that abort the process.
314+ /// This function **cannot** catch panics when `panic=abort`, or with a manually written panic
315+ /// handler that aborts the process.
318316///
319317/// If a custom panic hook has been set, it will be invoked before the panic is
320318/// caught, before unwinding.
321319///
322320/// Although unwinding into Rust code with a foreign exception (e.g. an
323- /// exception thrown from C++ code) via an appropriate ABI (e.g. `"C-unwind"`)
324- /// is permitted, catching such an exception using this function is undefined
325- /// behavior.
321+ /// exception thrown from C++ code, or a `panic!` in Rust code compiled or linked with a different
322+ /// runtime) via an appropriate ABI (e.g. `"C-unwind"`) is permitted, catching such an exception
323+ /// using this function will have one of two behaviors, and it is unspecified which will occur:
324+ ///
325+ /// * The process aborts.
326+ /// * The function returns a `Result::Err` containing an opaque type.
326327///
327328/// Finally, be **careful in how you drop the result of this function**.
328329/// If it is `Err`, it contains the panic payload, and dropping that may in turn panic!
0 commit comments