Macro std::panic1.0.0[][src]

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

让当前线程 panics。

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

此宏是在示例代码和测试中声明条件的理想方法。 panic!OptionResult 枚举的 unwrap 方法密切相关。 当它们被设置为 NoneErr 变体时,这两个实现都调用了 panic!

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

默认 std 钩子的行为,即 在调用 panic 之后直接运行的代码是将消息的有效载荷以及 panic!() 调用的文件、行、列信息打印到 stderr

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

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

另请参见宏 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