Übersetzung ins Deutsche
Python - Ausnahmebehandlung
Hallo dort,ambitionierte Pythonistas! Heute tauchen wir in die aufregende Welt der Ausnahmebehandlung in Python ein. Keine Sorge, wenn du neu bei der Programmierung bist – ich werde dich Schritt für Schritt durch dieses Konzept führen, genau wie ich es für unzählige Studenten in meinen Jahren des Unterrichtens getan habe. Also, nimm dir eine Tasse deiner Lieblingsgetränk und lass uns gemeinsam auf diese Python-Abenteuerreise aufbrechen!
Ausnahmebehandlung in Python
Stell dir vor, du bereitest ein köstliches Essen vor, aber plötzlich realizierst du, dass du eine entscheidende Zutat nicht mehr hast. Was würdest du tun? Du würdest wohl das Kochen stoppen und alle über das Problem informieren, oder? Genau das ist die Ausnahmebehandlung in Python auch – es ist eine Möglichkeit, anzuzeigen, dass etwas Unerwartetes oder Problematisches in deinem Code aufgetreten ist.
Warum Ausnahmen erheben?
Das Erheben von Ausnahmen ermöglicht uns, Folgendes zu tun:
- Fehler oder ungewöhnliche Situationen anzuzeigen
- Den Ablauf unseres Programms zu steuern
- Bedeutungsvolle Rückmeldung an Benutzer oder andere Teile unseres Codes zu geben
Lass uns mit einem einfachen Beispiel beginnen:
def teile(a, b):
if b == 0:
raise ValueError("Kann nicht durch null teilen!")
return a / b
try:
ergebnis = teile(10, 0)
except ValueError as e:
print(f"Ouch! Ein Fehler ist aufgetreten: {e}")
In diesem Beispiel erheben wir eine ValueError
, wenn jemand versucht, durch null zu teilen. Lass uns das aufbrechen:
- Wir definieren eine Funktion
teile(a, b)
, die überprüft, obb
null ist. - Wenn
b
null ist, erheben wir eineValueError
mit einer benutzerdefinierten Meldung. - Wir verwenden einen
try-except
-Block, um die Ausnahme abzufangen und eine freundliche Meldung auszugeben.
Wenn du diesen Code ausführst, wirst du sehen:
Ouch! Ein Fehler ist aufgetreten: Kann nicht durch null teilen!
Erheben von eingebauten Ausnahmen
Python kommt mit einer Vielzahl eingebauter Ausnahmen, die wir erheben können. Hier ist eine Tabelle einiger gängiger Ausnahmen:
Ausnahme | Beschreibung |
---|---|
ValueError | Erhoben, wenn eine Funktion ein Argument vom richtigen Typ, aber einem unangemessenen Wert erhält |
TypeError | Erhoben, wenn eine Operation oder Funktion auf ein Objekt eines unangemessenen Typs angewendet wird |
IndexError | Erhoben, wenn ein Sequenz-Subskript außerhalb des Bereichs liegt |
KeyError | Erhoben, wenn ein Dictionary-Schlüssel nicht gefunden wird |
FileNotFoundError | Erhoben, wenn eine Datei oder ein Verzeichnis angefordert wird, aber nicht existiert |
Lass uns einige Beispiele sehen:
def überprüfe_alter(alter):
if not isinstance(alter, int):
raise TypeError("Das Alter muss eine ganze Zahl sein")
if alter < 0:
raise ValueError("Das Alter kann nicht negativ sein")
print(f"Dein Alter ist {alter}")
try:
überprüfe_alter("zwanzig")
except TypeError as e:
print(f"Typ-Fehler: {e}")
try:
überprüfe_alter(-5)
except ValueError as e:
print(f"Wert-Fehler: {e}")
Wenn du diesen Code ausführst, wirst du sehen:
Typ-Fehler: Das Alter muss eine ganze Zahl sein
Wert-Fehler: Das Alter kann nicht negativ sein
Erheben von benutzerdefinierten Ausnahmen
Manchmal reichen die eingebauten Ausnahmen einfach nicht. Das ist, wenn wir unsere eigenen benutzerdefinierten Ausnahmen erstellen! Es ist wie ein Chef, der seine eigenen einzigartigen Rezepte kreiert.
Erstellen von benutzerdefinierten Ausnahmen
Um eine benutzerdefinierte Ausnahme zu erstellen, definieren wir einfach eine neue Klasse, die von der Exception
-Klasse erbt:
class ZuVielePizzenFehler(Exception):
pass
def pizze_bestellen(anzahl):
if anzahl > 100:
raise ZuVielePizzenFehler("Whoa! Das sind zu viele Pizzen, um sie zu bewältigen!")
print(f"Bestellung bestätigt: {anzahl} Pizzen")
try:
pizze_bestellen(101)
except ZuVielePizzenFehler as e:
print(f"Bestellung fehlgeschlagen: {e}")
In diesem köstlichen Beispiel:
- Wir definieren eine benutzerdefinierte Ausnahme
ZuVielePizzenFehler
. - Unsere
pizze_bestellen
-Funktion erhebt diese Ausnahme, wenn jemand mehr als 100 Pizzen bestellt. - Wir fangen die Ausnahme ab und geben eine freundliche Meldung aus.
Wenn du diesen Code ausführst, wirst du sehen:
Bestellung fehlgeschlagen: Whoa! Das sind zu viele Pizzen, um sie zu bewältigen!
Wiedererheben von Ausnahmen
Manchmal möchtest du vielleicht eine Ausnahme fangen, etwas damit tun und sie dann wieder erheben, damit jemand anderes sie behandelt. Es ist wie das Übergabspiel eines heißen Kartoffels in einem Spiel!
So kannst du es tun:
def riskante_operation():
print("Starte riskante Operation...")
raise ValueError("Etwas ist schiefgelaufen!")
def durchführe_operation():
try:
riskante_operation()
except ValueError:
print("Fehler gefangen, protokolliere...")
raise # Wiedererhebe die Ausnahme
try:
durchführe_operation()
except ValueError as e:
print(f"Operation fehlgeschlagen: {e}")
In diesem Beispiel:
-
riskante_operation()
erhebt immer eineValueError
. -
durchführe_operation()
fängt die Ausnahme ab, protokolliert sie und erhebt sie dann wieder. - Wir fangen die wiedererhobene Ausnahme im äußeren
try-except
-Block ab.
Wenn du diesen Code ausführst, wirst du sehen:
Starte riskante Operation...
Fehler gefangen, protokolliere...
Operation fehlgeschlagen: Etwas ist schiefgelaufen!
Und das ist es, Leute! Wir haben das Erheben von Ausnahmen, eingebaute Ausnahmen, benutzerdefinierte Ausnahmen und sogar das Wiedererheben von Ausnahmen abgedeckt. Denke daran, Ausnahmen sind nicht deine Feinde – sie sind wertvolle Werkzeuge, die dir helfen, robuste und fehlerresistente Code zu schreiben.
Wie ich meinen Studenten immer sage, Programmierung ist wie das Lernen, ein Fahrrad zu fahren. Du könntest ein paar Mal fallen, aber jeder Sturz (oder Ausnahme) lehrt dich etwas Neues. Übe weiter, bleib neugierig und habe keine Angst, einige Ausnahmen unterwegs zu erheben!
Happy coding, und möge dein Ausnahmen immer intendiert sein! ?✨
Credits: Image by storyset