Entspricht der Try-Catch-Anweisung in Rust

Muhammad Adil 21 Juni 2022
Entspricht der Try-Catch-Anweisung in Rust

Rust ist eine Programmiersprache, die eine sicherere und zuverlässigere Methode zur Entwicklung von Software bietet. Es wurde entwickelt, um allgemeine Fehler zu verhindern, die zu Sicherheitslücken in anderen Sprachen führen.

Die Rust-Sprache unterstützt keine Ausnahmebehandlung, was bedeutet, dass es in Rust keine try-catch-Anweisung gibt.

Das Fehlen einer Ausnahmebehandlung in Rust eliminiert die Möglichkeit von Laufzeitfehlern aufgrund von Ausnahmen, die von einer Funktion ausgelöst werden. Dies liegt daran, dass das Programm an dem Punkt anhält, an dem ein Fehler auftritt, anstatt fortzufahren und möglicherweise andere Probleme in der Codebasis zu verursachen.

In diesem Artikel wird das Rust-Äquivalent zu einer try-catch-Anweisung diskutiert.

Entspricht der try-catch-Anweisung in Rust

In Rust gibt es viele Äquivalente für try-catch-Anweisungen. Aber hier in diesem Artikel werden wir nur einige wenige Äquivalente diskutieren.

Verwenden Sie das ? Betreiber in Rust

In Rust können wir das ? Operator, um die Werte zurückzugeben oder nicht zurückzugeben.

Das ? Operator ist eines der wesentlichen Features von Rust und kann auf viele verschiedene Arten verwendet werden. Es kann prüfen, ob ein Wert vorhanden ist, ob einer Variablen ein Wert zugewiesen wurde oder ob ein Ausdruck als wahr oder falsch ausgewertet wird.

Das ? Der Operator kann auch als Alternative für Rusts try-catch-Anweisung verwendet werden. Das ? Der Operator nimmt einen Abschluss als Parameter.

Die Schließung kann dann aufgerufen werden, ohne sich Gedanken darüber machen zu müssen, was passiert, wenn während der Ausführung ein Fehler auftritt.

Das ? Der Operator fängt den Fehler ab und gibt den Wert des Abschlusses zurück, wenn kein Fehler aufgetreten ist, oder er gibt einen Fehlertyp mit einer Beschreibung des Fehlers zurück, falls es einen gab.

Beispiel:

fn main() {
    let hello_tasks = || -> Result<(), HelloError> {
        hello_task_1()?;
        hello_task_2()?;
        hello_task_3()?;
        Ok(())
    };
    if let Err(_err) = hello_tasks() {
        println!("There's an error in your code, please correct it");
    }
}
enum HelloError {
    HelloTask1Error,
    HelloTask2Error,
    HelloTask3Error,
}
fn hello_task_1() -> Result<(), HelloError> {
    println!("Task No 1");
    Ok(())
}
fn hello_task_2() -> Result<(), HelloError> {
    println!("Task No 2");
    Err(HelloError::HelloTask2Error)
}
fn hello_task_3() -> Result<(), HelloError> {
    println!("task3");
    Ok(())
}

Ausgabe:

Task No 1
Task No 2
There's an error in your code, please correct it

Klicken Sie hier, um die Live-Demonstration des oben genannten Codes zu überprüfen.

Muhammad Adil avatar Muhammad Adil avatar

Muhammad Adil is a seasoned programmer and writer who has experience in various fields. He has been programming for over 5 years and have always loved the thrill of solving complex problems. He has skilled in PHP, Python, C++, Java, JavaScript, Ruby on Rails, AngularJS, ReactJS, HTML5 and CSS3. He enjoys putting his experience and knowledge into words.

Facebook