本文简要介绍rust语言中 Macro std::panic
的用法。
用法
macro_rules! panic {
($($arg : tt) *) => { ... };
}
Panics当前线程。
这允许程序立即终止并向程序的调用者提供反馈。 panic!
应在程序达到不可恢复状态时使用。
这个宏是在示例代码和测试中断言条件的完美方式。 panic!
与 Option
和 Result
枚举的 unwrap
方法密切相关。当它们设置为 None
或 Err
变体时,这两种实现都会调用 panic!
。
使用 panic!()
时,您可以指定使用 format!
语法构建的字符串有效负载。在将Panics注入调用 Rust 线程时使用该有效负载,导致线程完全Panics。
默认 std
钩子的行为,即在调用Panics后直接运行的代码,是将消息有效负载与 panic!()
调用的文件/行/列信息一起打印到 stderr
。您可以使用 std::panic::set_hook()
覆盖Panics钩子。在挂钩内部,Panics可以作为 &dyn Any + Send
访问,其中包含用于常规 panic!()
调用的 &str
或 String
。要对另一个其他类型的值进行Panics,可以使用 panic_any
。
Result
枚举通常是比使用 panic!
宏更好的错误恢复解决方案。该宏应用于避免使用不正确的值(例如来自外部源的值)继续进行。有关错误处理的详细信息可在 book 中找到。
另请参阅宏 compile_error!
,以了解编译期间的错误。
当前实施
如果主线程发生Panics,它将终止所有线程并使用代码 101
结束程序。
例子
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
相关用法
- Rust panicking用法及代码示例
- Rust park用法及代码示例
- Rust park_timeout用法及代码示例
- Rust pointer.offset_from用法及代码示例
- Rust pointer.is_null用法及代码示例
- Rust pointer.add用法及代码示例
- Rust pointer.get_unchecked用法及代码示例
- Rust pointer.align_offset用法及代码示例
- Rust pointer.wrapping_add用法及代码示例
- Rust pointer.wrapping_offset用法及代码示例
- Rust pointer.wrapping_sub用法及代码示例
- Rust poll_fn用法及代码示例
- Rust pointer.as_uninit_ref用法及代码示例
- Rust pointer.len用法及代码示例
- Rust pointer.get_unchecked_mut用法及代码示例
- Rust pointer.sub用法及代码示例
- Rust pointer.set_ptr_value用法及代码示例
- Rust println用法及代码示例
- Rust pointer.as_ptr用法及代码示例
- Rust pointer.as_mut_ptr用法及代码示例
- Rust pending用法及代码示例
- Rust pointer用法及代码示例
- Rust print用法及代码示例
- Rust pointer.offset用法及代码示例
- Rust pointer.as_mut用法及代码示例
注:本文由纯净天空筛选整理自rust-lang.org大神的英文原创作品 Macro std::panic。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。