Verschachtelte try...except-Anweisungen in Python

Vaibhav Vaibhav 22 Januar 2022
Verschachtelte try...except-Anweisungen in Python

Die Anweisung try...except wird in Python verwendet, um Ausnahmen abzufangen oder fehleranfälligen Code auszuführen. Heutzutage hat jede Programmiersprache diese Funktion, aber in Python wird es durch diese Wörter bzw. durch die Schlüsselwörter try...außer repräsentiert. Neben try...except könnte auch ein weiteres Schlüsselwort, nämlich finally, zusammen mit ihnen verwendet werden.

Wie for-Schleifen können auch diese try-, catch- und finally-Anweisungen verschachtelt werden, und in diesem Artikel werden wir darüber sprechen.

Verschachtelte try...except-Anweisungen in Python

Wie oben erwähnt, können wir diese Anweisungen auf die gleiche Weise verschachteln, wie wir for-Schleifen verschachteln. Ein Beispiel finden Sie im folgenden Code.

a = {"a": 5, "b": 25, "c": 125}

try:
    print(a["d"])
except KeyError:
    try:
        print("a:", a["a"])
    except:
        print("No value exists for keys 'a' and 'd'")
    finally:
        print("Nested finally")
finally:
    print("Finally")

Ausgabe:

a: 5
Nested finally
Finally

Wie wir sehen, initialisiert das obige Programm zunächst ein Dictionary mit einigen Schlüssel-Wert-Paaren und versucht dann, auf den Wert für den Schlüssel d zuzugreifen. Da kein Schlüssel-Wert-Paar existiert, wird eine KeyError-Ausnahme ausgelöst und von der Exception-Anweisung abgefangen. Dann führen die Interpreter den Code unter dem verschachtelten try-Block aus. Da für den Schlüssel a ein Wert existiert, wird dieser an die Konsole ausgegeben und der Code unter der verschachtelten finally-Anweisung ausgeführt. Zuletzt wird der Code unter der äußeren finally-Anweisung ausgeführt.

Das bedeutet, dass wir die Anweisungen try, catch und finally unter jede try-, catch- und finally-Anweisung setzen können. Lassen Sie dies an einem Beispiel verstehen. Wir werden Code schreiben, der die Anweisungen try, catch und finally enthält, und alle diese Anweisungen enthalten auch die Anweisungen try, catch und finally.

a = {
    "a": 5,
    "b": 25,
    "c": 125,
    "e": 625,
    "f": 3125,
}

try:
    try:
        print("d:", a["d"])
    except:
        print("a:", a["a"])
    finally:
        print("First nested finally")
except KeyError:
    try:
        print("b:", a["b"])
    except:
        print("No value exists for keys 'b' and 'd'")
    finally:
        print("Second nested finally")
finally:
    try:
        print("c:", a["c"])
    except:
        print("No value exists for key 'c'")
    finally:
        print("Third nested finally")

Ausgabe:

a: 5
First nested finally
c: 125
Third nested finally

Wie wir sehen, wird zuerst der äußere try-Block ausgeführt. Da für den Schlüssel d kein Wert gefunden wird, wird der Code unter der verschachtelten except-Anweisung ausgeführt und die verschachtelte finally. Da der äußere try-Block während der Ausführung keine Ausnahmen erhalten hat, wird sein except-Block übersprungen und der Code unter dem äußeren finally-Block ausgeführt.

Wir können dies sogar beliebig weiterführen und n Ebenen von verschachtelten try-, catch- und finally-Anweisungen erstellen. Aber wenn die Anzahl der verschachtelten Ebenen zunimmt, wird der Kontroll- oder Ausführungsfluss etwas kompliziert und unüberschaubar. Es wird schwierig, sich durch die Aussagen try, catch und finally zu navigieren.

Vaibhav Vaibhav avatar Vaibhav Vaibhav avatar

Vaibhav is an artificial intelligence and cloud computing stan. He likes to build end-to-end full-stack web and mobile applications. Besides computer science and technology, he loves playing cricket and badminton, going on bike rides, and doodling.

Verwandter Artikel - Python Statement