Introducción
En este laboratorio, exploramos las opciones de estrategia de pánico abort y unwind, que se pueden utilizar para manejar errores en el código Rust.
Nota: Si el laboratorio no especifica un nombre de archivo, puede utilizar cualquier nombre de archivo que desee. Por ejemplo, puede utilizar
main.rs, compilar y ejecutarlo conrustc main.rs &&./main.
abort y unwind
La sección anterior ilustra el mecanismo de manejo de errores panic. Diferentes caminos de código pueden ser compilados condicionalmente basados en la configuración de panic. Los valores disponibles actualmente son unwind y abort.
Basado en el ejemplo anterior de limonada, usamos explícitamente la estrategia de panic para probar diferentes líneas de código.
fn drink(beverage: &str) {
// No deberías beber demasiadas bebidas azucaradas.
if beverage == "lemonade" {
if cfg!(panic="abort"){ println!("This is not your party. Run!!!!");}
else{ println!("Spit it out!!!!");}
}
else{ println!("Some refreshing {} is all I need.", beverage); }
}
fn main() {
drink("water");
drink("lemonade");
}
Aquí hay otro ejemplo que se centra en reescribir drink() y usar explícitamente la palabra clave unwind.
#[cfg(panic = "unwind")]
fn ah(){ println!("Spit it out!!!!");}
#[cfg(not(panic="unwind"))]
fn ah(){ println!("This is not your party. Run!!!!");}
fn drink(beverage: &str){
if beverage == "lemonade"{ ah();}
else{println!("Some refreshing {} is all I need.", beverage);}
}
fn main() {
drink("water");
drink("lemonade");
}
La estrategia de panic se puede configurar desde la línea de comandos usando abort o unwind.
rustc lemonade.rs -C panic=abort
Resumen
¡Felicitaciones! Has completado el laboratorio de Abort y Unwind. Puedes practicar más laboratorios en LabEx para mejorar tus habilidades.