Die Ausnahmebehandlung ist Ihre Fähigkeit, Fehlermeldungen für Teile Ihres Programms, die nicht funktionieren, anzupassen und anzuzeigen.
Egal, ob Sie eine Website erstellen, eine API, ein Modul oder ein anderes Produkt mit Python erstellen, Ihre Fähigkeit, Ausnahmen effektiv zu behandeln, ermöglicht es Ihnen, die Ursache eines Fehlers explizit anzugeben.
Hier sehen wir uns an, wie Sie mit Ausnahmen in Python umgehen können.
So funktioniert die Ausnahmebehandlung in Python
Wenn Sie Ausnahmen auslösen, weisen Sie Python an, eine Nachricht anzuzeigen, wenn ein Codeblock fehlschlägt. Der Umgang mit Ausnahmen ist, als würde man jemandem sagen, er solle versuchen, ein Gewicht zu heben. Und wenn sie es nicht können, sollten sie es Sie wissen lassen.
Um eine Ausnahme in Python auszulösen, weisen Sie Python jedoch an, zu versuchen, einen bestimmten Codeblock auszuführen. Wenn dieser Block fehlschlägt, können Sie Python bitten, eine definierte Ausnahme für den fehlgeschlagenen Code auszulösen.
Wann sollten Sie Ausnahmen in der Python-Programmierung verwenden?
In den meisten Fällen können Sie Standard-Python-Fehler mit Ausnahmen maskieren. Sie müssen jedoch wachsam bleiben, da dies zu Debugging-Problemen führen kann. Folglich fällt es Ihnen möglicherweise schwer, die Ursache eines eventuellen Fehlers herauszufinden.
Daher sollten Sie Ausnahmen verwenden, wenn Sie Ihren Code ausreichend getestet haben und sicher sind, dass er funktioniert. Letztendlich ist es am besten, sie zu verwenden, um potenzielle Fehler zu behandeln, die von der Benutzerseite und nicht vom Code selbst herrühren können.
Mit anderen Worten, Sie können Ausnahmen als Warntool verwenden, um Benutzer bei der Verwendung Ihres Programms zu unterstützen.
Umgang mit Python-Ausnahmen
Um Ausnahmen in Python zu behandeln, müssen Sie Ihren Code zuerst in a einschließen versuchen...außer Block. Gelegentlich müssen Sie möglicherweise a schließlich -Anweisung, um je nach Bedarf weitere Aktionen abzuwickeln.
Das Codierungskonzept von Python-Ausnahmen sieht im Allgemeinen so aus:
Versuchen:
"Auszuführender Code"
außer:
"Fehlermeldung"
Wie bereits erwähnt, können Sie auch schließlich in einem Ausnahmeblock. Aber der Code, den Sie in a. schreiben schließlich -Klausel ist unabhängig und wird ausgeführt, unabhängig davon, ob eine Ausnahme vorliegt oder nicht.
Im Wesentlichen ist es praktisch, wenn Sie einen weiteren Codeblock haben, den Sie kontinuierlich ausführen möchten, unabhängig davon, was innerhalb der versuchen...außer Block.
Hier ist ein Beispiel:
Versuchen:
drucken (9+6)
außer:
print("Fehlermeldung")
schließlich:
print("Bitte neu starten")
Ausgabe:
15
bitte neustarten
Im obigen Code, bitte neustarten läuft kontinuierlich, unabhängig davon, ob eine Ausnahme vorliegt oder nicht.
Ein sonst Bedingung kann auch folgen außer Aussage:
Versuchen:
C = 2 + B
außer:
print("B muss definiert werden")
sonst:
print (u"Erfolgreich hinzugefügt! Das Ergebnis ist %s"%(C))
Ausgabe: B muss definiert werden
Versuchen Sie es jetzt noch einmal mit definiertem "B":
Versuchen:
B = 5
C = 2 + B
außer:
print("B muss definiert werden")
sonst:
print (u"Erfolgreich hinzugefügt! Das Ergebnis ist %s"%(C))
Ausgabe: Erfolgreich hinzugefügt! Das Ergebnis ist 7
Die obigen Beispiele sind nicht standardisierte Ausnahmen. Sie können jedoch eine explizitere Ausnahme haben, wenn Sie integrierte (definierte) Ausnahmen mit nicht standardisierten kombinieren:
Versuchen:
C = 2 + B
außer NameError als Fehler:
print (err, ":", "B muss definiert werden, bitte")
sonst:
print (u"Erfolgreich hinzugefügt! Das Ergebnis ist %s"%(C))
Ausgabe: Name 'B' ist nicht definiert: B muss definiert werden, bitte
Die obige Ausnahme prüft zuerst, ob a NameFehler in dem Versuchen Block. Es druckt dann den Standard NameFehler Ausnahme zuerst ("Name 'B' ist nicht definiert"). Und unterstützt es mit Ihrer schriftlichen Ausnahme ("B muss definiert werden, bitte").
Verbunden: Grundlegende Programmierprinzipien, die jeder Programmierer kennen muss
Und wenn Sie eine Kette von Ausnahmen abwickeln möchten, können Sie auch a Versuchen Block mit vielen außer Aussagen. Das ist ziemlich praktisch, wenn du Versuchen block hat das Potenzial, viele Ausnahmen zu haben:
Versuchen:
B = 5
C = 2 + B
D = Schwimmer (6)
F = 7/0
außer NameError als Fehler:
print (err,":", "B muss definiert werden, bitte")
außer ValueError als Wert:
print (val,":", "Sie können diese Daten nicht konvertieren")
außer ZeroDivisionError als zeroerr:
print (zeroerr,":", "Sie können eine Zahl nicht durch Null teilen")
sonst:
print(u"Operation erfolgreich! Die Ergebnisse sind: %s, %s und %s"%(C, D, F))
Ausgabe: Division durch Null: Eine Zahl kann nicht durch Null geteilt werden
Was ist, wenn die Aufteilung gültig ist? Zum Beispiel ersetzen F = 7/0 im obigen Code mit F = 7/5 gibt:
Ausgabe: Betrieb erfolgreich! Die Ergebnisse sind: 7, 6,0 und 1,4
Benutzerdefinierte Ausnahmen in Python
Sie können sich auch Ihre Ausnahme ausdenken und sie später in Ihrem Programm aufrufen. Auf diese Weise können Sie Ihre Ausnahme konkret beschreiben und nach Belieben benennen.
Trotzdem kommt jede benutzerdefinierte Ausnahme (direkt oder indirekt) immer noch aus dem eingebauten Ausnahme Klasse von Python.
Der folgende Beispielcode bezieht sich auf die Basis Ausnahme direkt per Anruf Laufzeit Fehler davon:
Klasse connectionError (RuntimeError):
def __init__(self, value):
Eigenwert = Wert
Versuchen:
raise connectionError("Ungültiger Hostname")
außer Verbindungsfehler als Fehler:
print (Fehlerwert)
Ausgabe: Ungültiger Hostname
Beachten Sie, dass Verbindungsfehler, ist in diesem Fall eine benutzerdefinierte Klasse, die Sie jederzeit in Ihrem Programm aufrufen können.
Verbunden: Der Anfängerleitfaden zu regulären Ausdrücken mit Python
Sie können eine benutzerdefinierte Ausnahme machen, indem Sie sie direkt von der Ausnahme Basisklasse. Die folgende Ausnahme verhindert jedoch die Subtraktion von 5 von 6 und ruft die Ausnahme direkt aus der Basisklasse auf:
Klassenfehler (Ausnahme):
bestehen
Klasse SixFiveError (Fehler):
def __init__(self, value, message):
Eigenwert = Wert
self.message = Nachricht
Versuchen:
raise sixFiveError (6-5,"Diese Subtraktion ist nicht erlaubt")
außer sixFiveError als e:
print("Es ist ein Fehler aufgetreten:", e.message)
Ausgabe: Es ist ein Fehler aufgetreten: Diese Subtraktion ist nicht zulässig
In der Praxis können Sie eine zuvor definierte Ausnahme verwenden, indem Sie sie in einer anderen Funktion aufrufen. Sie können zum Beispiel a floatError das erlaubt nur das Hinzufügen von zwei Floats:
# Rufen Sie zuerst die Basis-Ausnahmeklassen auf:
Klassenfehler (Ausnahme):
bestehen
# Leiten Sie als Nächstes Ihre eigene Ausnahme von der Basisklasse ab:
Klasse FloatError (Fehler):
def __init__(self, value, message):
Eigenwert = Wert
self.message = Nachricht
# Erstellen Sie eine Funktion, um zwei Floats hinzuzufügen:
def addTwoFloat (a, b):
if (type (a) und type (b)) != float:
raise FloatError (a+b,"Zahlen müssen float sein, um sie hinzuzufügen")
sonst:
drucken (a + b)
addTwoFloat (4, 7)
Ausgabe: __main__.FloatError: (11, 'Zahlen müssen Float sein, um hinzugefügt zu werden')
Weil Sie jetzt a. definiert haben FloatError Klasse, löst Python sie aus, wenn Sie versuchen, zwei Nicht-Float-Literale mit der. hinzuzufügen addtwoFloat Funktion.
Sie können die ausdrucken FloatError -Klasse in derselben Python-Datei, in der Sie sie erstellt haben, um zu sehen, was passiert:
drucken (FloatError)
Ausgabe:
FloatErrorist jedoch keine integrierte Python-Ausnahme. Sie können dies überprüfen, indem Sie anrufen FloatError in einer anderen frischen Python-Datei, in der Sie diese Klasse nicht erstellt haben:
drucken (FloatError)
Ausgabe: NameError: Name 'FloatError' ist nicht definiert
Du bekommst ein NameFehler weil Python dies nicht als Standardausnahme erkennt.
Sie können auch versuchen, andere Fehlerklassen selbst zu definieren, um zu sehen, wie sie sich auswirken.
Machen Sie Ihre Python-Programme mit Ausnahmen benutzerfreundlicher
Es gibt viele Standardausnahmen in Python. Sie können aber auch Ihre definieren. Nichtsdestotrotz hängt die Benutzerfreundlichkeit Ihres Programms in gewissem Maße davon ab, wie es mit verschiedenen Ausnahmen umgeht (ob benutzerdefiniert, unspezifisch oder standardmäßig).
Mit Ausnahmen können Sie jedoch bestimmen, wie Ihr Programm funktionieren soll, wenn Benutzer mit ihnen interagieren. Die klare und prägnante Angabe der Fehlerursache gibt den Benutzern auch einen Hinweis darauf, was sie falsch machen, und weist sie manchmal in die richtige Richtung.
Rüsten Sie sich mit dem Know-how aus, um jeden Python-Bug auf Ihrem Weg zu beseitigen.
Weiter lesen
- Programmierung
- Python
- Codierungs-Tutorials
Idowu hat eine Leidenschaft für alles, was smarte Technologien und Produktivität ist. In seiner Freizeit spielt er mit Programmieren und wechselt bei Langeweile aufs Schachbrett, aber er liebt es auch, ab und zu aus der Routine auszubrechen. Seine Leidenschaft, Menschen den Weg in die moderne Technik zu weisen, motiviert ihn, mehr zu schreiben.
Abonnieren Sie unseren Newsletter
Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!
Noch ein Schritt…!
Bitte bestätigen Sie Ihre E-Mail-Adresse in der E-Mail, die wir Ihnen gerade gesendet haben.