Rust 程式設計中的 Panic! Macro


Rust 中對臨界錯誤的處理工作得益於 panic! Macro的幫助。在 Rust 中還有其他處理錯誤的方法,但 panic 的獨特之處在於它用於處理無法恢復的錯誤。

當我們執行 panic! Macro時,整個程式從棧中展開,因此程式將退出。由於程式退出的這種方式,我們通常將 panic! 用於無法恢復的錯誤。

語法

呼叫 panic 的語法如下 −

panic!("An error was encountered");

我們通常在括號內傳遞一條自定義訊息。

示例

參考以下所示程式碼 −

 活動演示

fn drink(beverage: &str) {
   if beverage == "lemonade" { panic!("AAAaaaaa!!!!"); }
   println!("Some refreshing {} is all I need.", beverage);
}
fn main() {
   drink("soda");
   drink("lemonade");
}

輸出

thread 'main' panicked at 'AAAaaaaa!!!!', src/main.rs:3:33
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace Some refreshing soda is all I need.

請注意,當我們看到飲料是“檸檬水”時,我們正在建立 panic。另一個更實用的 panic 用例可能是這樣的 −

示例

fn main() {
   let x = 3;
   let y = 0;
   if y == 0 {
      panic!("Cannot divide by zero!");
   }
   println!("{}", x/y);
}

輸出

thread 'main' panicked at 'Cannot divide by zero!', src/main.rs:6:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

更新於:03-Apr-2021

222 瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始
廣告