Rust: errores irrecuperables

Los errores irrecuperables son aquellos errores que, como sugiere su nombre, no pueden ser manejados por un programador. Cuando se produce un error irrecuperable, el resultado final es que el programa se cierra (termina). ¡ El proceso completo es el primer pánico! se dispara la macro, luego se imprime el mensaje de error junto con su ubicación y, finalmente, el programa finaliza. Surge principalmente debido a los errores que deja el programador en el código.

Ejemplo 1:

  • En este ejemplo, llamaremos pánico! macro.
  • Mostrará nuestro mensaje de error y el seguimiento completo de la pila (ubicación, mensaje).
  • Después de esto, se desenrolla y limpia la pila, y luego sale (finaliza el programa).

El siguiente programa es para errores irrecuperables en Rust.

Rust

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

Producción :

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)

Ejemplo 2:

  • En este programa, definiremos una array gfg que constará de cuatro strings.
  • Ahora intentaremos imprimir 5 elementos en la array y debido a que la longitud es 4 [0-3] y estamos buscando el quinto índice, ¡provocará pánico! macro.
  • Después de esto, imprimirá el mensaje de error, la ubicación y el seguimiento de la pila.

El siguiente programa es para errores irrecuperables en Rust.

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]);
}

Producción :

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

Publicación traducida automáticamente

Artículo escrito por rajatagrawal5 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *