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.rsverwenden und es mitrustc main.rs &&./mainkompilieren 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.