Python: Auslösen von Ausnahmen

PythonPythonBeginner
Jetzt üben

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

Einführung

Willkommen an der Geheimnisvollen Akademie für außergewöhnliches Coding - eine renomierte Institution, an der nur die talentiertesten Code-Zauberer zusammenkommen, um ihre Fähigkeiten zu schärfen. Du bist ein junger Zauberer, der kürzlich der Akademie und der immer herausfordernden Welt der magischen Algorithmen und komplexen Beschwörungen beigetreten ist.

Deine Reise beginnt unter der Leitung von Meister Pytho, einem bekannten Wettbewerbszauber-Coach, der in allen magischen Reichen für seine außergewöhnlichen Problemlösefähigkeiten und sein umfassendes Wissen um die Python-Sorcery bekannt ist. In der Akademie muss jeder Zauberer die Kunst des Zauberspruchs lernen, aber was einen Zauberer wirklich mächtig macht, ist die Fähigkeit, das Unerwartete zu antizipieren und zu steuern.

Heute wird Meister Pytho dir die alte Kunst des Auslösens von Ausnahmen beibringen - eine grundlegende Fähigkeit für jeden aufstrebenden Zauberer, die es ihm ermöglicht, den Fluss der Magie (Code) zu steuern und Schutzmechanismen gegen unvorhergesehene Fehler zu schaffen, die während des Zauberspruchs (Programmierens) auftauchen können.

Das Ziel dieses Lab ist es, dich in der Lage zu versetzen, robusten Python-Code zu schreiben, der Ausnahmen richtig behandeln und auslösen kann, um sicherzustellen, dass deine Zauber (Programme) nicht nur wirkungsvoll, sondern auch widerstandsfähig und sicher sind. Bereite dich vor, denn du beginnst eine verzauberte Reise durch die geheimnisvolle Welt des Python-Auslösens von Ausnahmen!


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL python(("Python")) -.-> python/ErrorandExceptionHandlingGroup(["Error and Exception Handling"]) python/ErrorandExceptionHandlingGroup -.-> python/raising_exceptions("Raising Exceptions") subgraph Lab Skills python/raising_exceptions -.-> lab-271583{{"Python: Auslösen von Ausnahmen"}} end

Grundlagen von Ausnahmen verstehen

In diesem Schritt lernst du die Grundlagen von Ausnahmen in Python kennen. Eine Ausnahme in Python ist wie ein unvorhergesehenes Ereignis, das den Ablauf einer Zauberspruchsequenz stört. Wenn Python einen Fehler entdeckt, stoppt es den aktuellen Prozess und übergibt ihn entlang des Aufrufrückzugs, bis er behandelt wird. Wenn die Ausnahme unbehandelt bleibt, bricht der Zauber (das Programm) ab, und Python gibt eine Fehlermeldung aus.

Um ein Szenario zu simulieren, in dem eine Ausnahme auftreten könnte, wirst du ein einfaches Python-Skript erstellen, das versucht, einen Zauber zu sprechen (eine Division auszuführen), der fehlschlägt.

Öffne eine Datei namens spellcasting.py im Verzeichnis ~/project mit dem folgenden Inhalt:

## spellcasting.py

def divide_potions(potions, wizards):
    return potions / wizards

## Ein Versuch, Tränke unter null Zauberern zu teilen, was eine Ausnahme auslösen wird.
divide_potions(10, 0)

Führe dein Zauberspruch-Skript mit dem Befehl aus:

python3 ~/project/spellcasting.py

Du wirst feststellen, dass Python eine ZeroDivisionError auslöst. Im nächsten Schritt wirst du lernen, wie diese Ausnahme richtig behandelt wird:

Traceback (most recent call last):
  File "/home/labex/project/spellcasting.py", line 7, in <module>
    divide_potions(10, 0)
  File "/home/labex/project/spellcasting.py", line 4, in divide_potions
    return potions / wizards
ZeroDivisionError: division by zero

Benutzerspezifische Ausnahmen auslösen

Es ist an der Zeit, zu einer fortgeschritteneren Zauberspruchtechnik überzugehen - das Auslösen eigener Ausnahmen. Dies ermöglicht es dir, benutzerdefinierte Fehlermeldungen zu erstellen und zu verwenden, was deine Zauber flexibler und besser kontrollierbar macht.

In diesem Schritt wirst du das Skript spellcasting.py so ändern, dass eine benutzerdefinierte Exception ausgelöst wird, wenn die falsche Anzahl von Zauberern an die divide_potions-Funktion übergeben wird.

Ändere zunächst die divid_potions-Funktion in spellcasting.py entsprechend:

## spellcasting.py

def divide_potions(potions, wizards):
    if wizards == 0:
        raise Exception("Cannot divide potions among zero wizards!")
    return potions / wizards

## Versuche, die Tränke erneut mit absichtlichem Fehler zu teilen.
divide_potions(20, 0)

Nachdem du die Änderungen gespeichert hast, führe dein geändertes Skript erneut aus:

python3 ~/project/spellcasting.py

Diesmal wird Python die benutzerdefinierte Exception-Nachricht auslösen:

Traceback (most recent call last):
  File "/home/labex/project/spellcasting.py", line 7, in <module>
    divide_potions(20, 0)
  File "/home/labex/project/spellcasting.py", line 3, in divide_potions
    raise Exception("Cannot divide potions among zero wizards!")
Exception: Cannot divide potions among zero wizards!

Ausnahmen mit Try-Except behandeln

In diesem Schritt wirst du lernen, wie du Ausnahmen mit dem try-except-Block elegant behandeln kannst. Das gewährleisten, dass dein Zauber (Programm) von Fehlern recover kann, ist eine entscheidende Fähigkeit für einen Zauberer.

Füge den try-except-Block um den divide_potions-Funktionsaufruf im spellcasting.py-Skript hinzu:

## spellcasting.py

def divide_potions(potions, wizards):
    if wizards == 0:
        raise Exception("Cannot divide potions among zero wizards!")
    return potions / wizards

try:
    ## Versuche, die Tränke zu teilen und potenzielle Fehler zu behandeln.
    result = divide_potions(30, 0)
    print(f"Jeder Zauberer erhält {result} Tränke.")
except Exception as e:
    print(f"Der Zauber ist fehlgeschlagen: {e}")

Führe dies im Terminal aus:

python3 ~/project/spellcasting.py

Wenn du nun das Skript ausführst, wird es statt abzustürzen die Ausgabe drucken:

Der Zauber ist fehlgeschlagen: Cannot divide potions among zero wizards!

Zusammenfassung

In diesem Lab haben wir durch die verzaubernden Gebiete des Python-Auslösens von Ausnahmen gereist. Wir haben mit einer Einführung in Ausnahmen begonnen, indem wir eine natürlich auftreten ließen, dann gelernt, wie wir unsere eigenen Ausnahmen und Nachrichten kreieren können, und schließlich haben wir uns mit der Kunst beschäftigt, diese Ausnahmen zu behandeln, ohne unseren Zauber (Programm) zu brechen.

Du hast jetzt die Grundlagen des Auslösens und Behandelns von Ausnahmen in Python beherrscht, eine Fähigkeit, die dir sicherlich auf deiner Reise als Code-Zauberer gut dienen wird. Dies trägt nicht nur zur Robustheit und Benutzerfreundlichkeit deiner Programme bei, sondern lehrt dich auch, auf unerwartete Verhaltensweisen vorauszubilden und dich darauf vorzubereiten - damit deine Zauber fehlerfrei bleiben und deine Fähigkeiten als Zauberer beispiellos sind.

Möge der Code mit dir sein, junger Zauberer.