當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Rust panic用法及代碼示例


本文簡要介紹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!() 調用的 &strString。要對另一個其他類型的值進行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-lang.org大神的英文原創作品 Macro std::panic。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。