本文簡要介紹rust語言中 Macro core::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 panic用法及代碼示例
- 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-lang.org大神的英文原創作品 Macro core::panic。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。