Abort und Unwind

RustRustBeginner
Jetzt üben

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

💡 Dieser Artikel wurde von AI-Assistenten übersetzt. Um die englische Version anzuzeigen, können Sie hier klicken

Einführung

In diesem Lab untersuchen wir die Panik-Strategieoptionen abort und unwind, die zum Behandeln von Fehlern im Rust-Code verwendet werden können.

Hinweis: Wenn im Lab kein Dateiname angegeben ist, können Sie einen beliebigen Dateinamen verwenden. Beispielsweise können Sie main.rs verwenden und es mit rustc main.rs &&./main kompilieren und ausführen.

abort und unwind

Der vorherige Abschnitt veranschaulicht den Fehlerbehandlungsmechanismus panic. Verschiedene Codepfade können bedingt kompiliert werden, basierend auf der Panik-Einstellung. Die derzeit verfügbaren Werte sind unwind und abort.

Aufbauend auf dem vorherigen Limonadenbeispiel verwenden wir die Panik-Strategie explizit, um verschiedene Codezeilen zu testen.

fn drink(beverage: &str) {
   // Du solltest nicht zu viele süße Getränke trinken.
    if beverage == "lemonade" {
        if cfg!(panic="abort"){ println!("Dies ist nicht deine Party. Lauf!!!!");}
        else{ println!("Spuck es aus!!!!");}
    }
    else{ println!("Ein bisschen erfrischendes {} ist alles, was ich brauche.", beverage); }
}

fn main() {
    drink("water");
    drink("lemonade");
}

Hier ist ein weiteres Beispiel, das sich auf die Umformulierung von drink() konzentriert und das unwind-Schlüsselwort explizit verwendet.

#[cfg(panic = "unwind")]
fn ah(){ println!("Spuck es aus!!!!");}

#[cfg(not(panic="unwind"))]
fn ah(){ println!("Dies ist nicht deine Party. Lauf!!!!");}

fn drink(beverage: &str){
    if beverage == "lemonade"{ ah();}
    else{println!("Ein bisschen erfrischendes {} ist alles, was ich brauche.", beverage);}
}

fn main() {
    drink("water");
    drink("lemonade");
}

Die Panik-Strategie kann von der Befehlszeile aus mit abort oder unwind festgelegt werden.

rustc lemonade.rs -C panic=abort

Zusammenfassung

Herzlichen Glückwunsch! Sie haben das Lab zu Abort und Unwind abgeschlossen. Sie können in LabEx weitere Labs absolvieren, um Ihre Fähigkeiten zu verbessern.