Abort y Desenrollar

RustRustBeginner
Practicar Ahora

This tutorial is from open-source community. Access the source code

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

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 con rustc main.rs &&./main.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL rust(("Rust")) -.-> rust/DataTypesGroup(["Data Types"]) rust(("Rust")) -.-> rust/FunctionsandClosuresGroup(["Functions and Closures"]) rust(("Rust")) -.-> rust/MemorySafetyandManagementGroup(["Memory Safety and Management"]) rust/DataTypesGroup -.-> rust/string_type("String Type") rust/FunctionsandClosuresGroup -.-> rust/function_syntax("Function Syntax") rust/FunctionsandClosuresGroup -.-> rust/expressions_statements("Expressions and Statements") rust/MemorySafetyandManagementGroup -.-> rust/lifetime_specifiers("Lifetime Specifiers") subgraph Lab Skills rust/string_type -.-> lab-99232{{"Abort y Desenrollar"}} rust/function_syntax -.-> lab-99232{{"Abort y Desenrollar"}} rust/expressions_statements -.-> lab-99232{{"Abort y Desenrollar"}} rust/lifetime_specifiers -.-> lab-99232{{"Abort y Desenrollar"}} end

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.