Macro std::panic 1.0.0[−][src]
macro_rules! panic {
($($arg : tt) *) => { ... };
}
Expand description
让当前线程 panics。
这允许程序立即终止并向程序的调用者提供反馈。
当程序达到不可恢复状态时,应使用 panic!
。
此宏是在示例代码和测试中声明条件的理想方法。
panic!
与 Option
和 Result
枚举的 unwrap
方法密切相关。
当它们被设置为 None
或 Err
变体时,这两个实现都调用了 panic!
。
使用 panic!()
时,你可以指定一个字符串有效载荷,它是使用 format!
语法构建的。
当将 panic 注入到调用的 Rust 线程中时,将使用这个有效载荷,从而导致该线程完全变为 panic。
默认 std
钩子的行为,即
在调用 panic 之后直接运行的代码是将消息的有效载荷以及 panic!()
调用的文件、行、列信息打印到 stderr
。
您可以使用 std::panic::set_hook()
覆盖 panic 钩子。
在钩子内部,可以通过 &dyn Any + Send
访问 panic,其中包含用于常规 panic!()
调用的 &str
或 String
。
对于具有其他类型值的 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