📜  Rust – 不可恢复的错误

📅  最后修改于: 2022-05-13 01:55:11.696000             🧑  作者: Mango

Rust – 不可恢复的错误

不可恢复的错误顾名思义就是程序员无法处理的那些错误。当发生任何不可恢复的错误时,最终结果是程序退出(终止)。完整的过程是第一个恐慌!宏被触发,然后错误消息连同它的位置一起打印,最后,程序终止。它主要是由于程序员在代码中留下的错误而引起的。

示例 1:

  • 在这个例子中,我们将调用panic!宏。
  • 它将显示我们的错误消息和完整的堆栈跟踪(位置,消息)。
  • 在此之后,它展开并清理堆栈,然后退出(终止程序)。

下面的程序是针对 Rust 中不可恢复的错误。

Rust
// Rust program for unrecoverable error
 
fn main() {
   
   // this will result in unrecoverable error
   panic!("gfg called panic macro");
}


Rust
// Rust program for unrecoverable error
 
fn main() {
   let gfg=["cp","algo","ds","FAANG"];
   
   // index 5 does not exist
   // than it will trigger panic! macro
   println!("{}", gfg[5]);
}




输出 :

thread 'main' panicked at 'gfg called panic macro', src\main.rs:4:5
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace
error: process didn't exit successfully: `target\debug\unrecoverableErrors.exe` (exit code: 101)

示例 2:

  • 在这个程序中,我们将定义一个由四个字符串组成的gfg数组。
  • 现在我们将尝试在数组中打印 5 个元素,因为长度是 4 [0-3] 并且我们正在寻找第 5 个索引而不是它会触发恐慌!宏。
  • 在此之后,它将打印错误消息、位置和堆栈跟踪。

下面的程序是针对 Rust 中不可恢复的错误。



// Rust program for unrecoverable error
 
fn main() {
   let gfg=["cp","algo","ds","FAANG"];
   
   // index 5 does not exist
   // than it will trigger panic! macro
   println!("{}", gfg[5]);
}

输出 :

error: this operation will panic at runtime
 --> src\main.rs:5:20
  |
5 |     println!("{}", gfg[5]);
  |                    ^^^^^^ index out of bounds: the length is 4 but the index is 5
  |
  = note: `#[deny(unconditional_panic)]` on by default