Abort et Unwind

RustRustBeginner
Pratiquer maintenant

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

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous explorons les options de stratégie de panique abort et unwind, qui peuvent être utilisées pour gérer les erreurs dans le code Rust.

Note : Si le laboratoire ne spécifie pas de nom de fichier, vous pouvez utiliser n'importe quel nom de fichier que vous voulez. Par exemple, vous pouvez utiliser main.rs, le compiler et l'exécuter avec 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 et Unwind"}} rust/function_syntax -.-> lab-99232{{"Abort et Unwind"}} rust/expressions_statements -.-> lab-99232{{"Abort et Unwind"}} rust/lifetime_specifiers -.-> lab-99232{{"Abort et Unwind"}} end

abort et unwind

La section précédente illustre le mécanisme de gestion d'erreurs panic. Différents chemins de code peuvent être compilés conditionnellement en fonction du paramètre de panique. Les valeurs disponibles actuellement sont unwind et abort.

En partant de l'exemple de limonade précédent, nous utilisons explicitement la stratégie de panique pour tester différentes parties de code.

fn drink(beverage: &str) {
   // Vous ne devriez pas boire trop de boissons sucrées.
    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");
}

Voici un autre exemple qui se concentre sur la réécriture de drink() et utilise explicitement le mot clé 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 stratégie de panique peut être définie à partir de la ligne de commande en utilisant abort ou unwind.

rustc lemonade.rs -C panic=abort

Résumé

Félicitations ! Vous avez terminé le laboratoire Abort et Unwind. Vous pouvez pratiquer d'autres laboratoires sur LabEx pour améliorer vos compétences.