Macro core::panic1.6.0[][src]

macro_rules! panic {
    ($($arg:tt)*) => { ... };
}
Expand description

Panics 当前线程。

这允许程序立即终止并向程序的调用者提供反馈。 panic! 当程序达到不可恢复的状态时应使用。

此宏是在示例代码和测试中声明条件的理想方法。 panic!OptionResult 枚举的 unwrap 方法紧密相关。 两种实现都将 panic! 设置为 NoneErr 成员时。

使用 panic!() 时,可以指定使用 format! 语法构建的字符串有效负载。 当将 panic 注入到调用的 Rust 线程中时,将使用该有效负载,从而导致该线程完全变为 panic。

默认 std hook 的行为,即 在调用 panic 之后直接运行的代码是将消息有效负载以及 panic!() 调用的 file/line/column 信息打印到 stderr

您可以使用 std::panic::set_hook() 覆盖 panic hook。 在 hook 内部,可以将 X0panic0Z 作为 &dyn Any + Send 进行访问,其中包含用于常规 panic!() 调用的 &strString。 对于具有其他类型值的 panic,可以使用 panic_any

Result 与使用 panic! 宏相比,枚举通常是从错误中恢复的更好解决方案。 应该使用此宏来避免继续使用不正确的值,例如来自外部来源的值。 有关错误处理的详细信息,请参见 book

另请参见宏 compile_error!,以获取编译期间的错误。

当前实现

如果主线程为 panics,它将终止您的所有线程并以代码 101 结束您的程序。

Examples

panic!();
panic!("this is a terrible mistake!");
panic!("this is a {} {message}", "fancy", message = "message");
std::panic::panic_any(4); // panic with the value of 4 to be collected elsewhere
Run