Umgang mit Ausnahmen in Python

Umgang mit Ausnahmen in Python

Die Ausnahmebehandlung ist Ihre Fähigkeit, Fehlermeldungen für Teile Ihres Programms, die nicht funktionieren, anzupassen und anzuzeigen.





Unabhängig davon, 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, dass er versuchen soll, 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 empfiehlt es sich, 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 Endlich -Anweisung, um je nach Bedarf weitere Aktionen abzuwickeln.





Das Codierungskonzept von Python-Ausnahmen sieht im Allgemeinen so aus:

try:
'code to be executed'
except:
'error message'

Wie bereits erwähnt, können Sie auch Endlich in einem Ausnahmeblock. Aber der Code, den Sie in a . schreiben Endlich -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:

try:
print(9+6)
except:
print('error message')
finally:
print('please restart')
Output:
15
please restart

Im obigen Code, bitte neustarten läuft kontinuierlich, unabhängig davon, ob eine Ausnahme vorliegt oder nicht.

Ein anders Bedingung kann auch folgen außer Stellungnahme:

try:
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: B needs to be defined

Versuchen Sie es jetzt noch einmal mit definiertem 'B':

try:
B = 5
C = 2 + B
except:
print('B needs to be defined')
else:
print(u'Added successfully! The result is %s'%(C))
Output: Added successfully! The result is 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:

try:
C = 2 + B
except NameError as err:
print(err, ':', 'B needs to be defined, please')
else:
print(u'Added successfully! The result is %s'%(C))
Output: name 'B' is not defined : B needs to be defined, please

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 dies mit Ihrer schriftlichen Ausnahme ('B muss bitte definiert werden').

Verwandte: Grundlegende Programmierprinzipien, die jeder Programmierer kennen muss

Kosten für den Austausch des MacBook Air-Akkus

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:

try:
B = 5
C = 2 + B
D = float(6)
F = 7/0
except NameError as err:
print(err,':', 'B needs to be defined, please')
except ValueError as val:
print(val,':', 'You can't convert that data')
except ZeroDivisionError as zeroerr:
print(zeroerr,':', 'You can't divide a number by zero')
else:
print(u'Operation successfull! The results are: %s, %s, and %s'%(C, D, F))
Output: division by zero : You can't divide a number by zero

Was ist, wenn die Aufteilung gültig ist? Zum Beispiel ersetzen F = 7/0 im obigen Code mit F = 7/5 gibt:

Output: Operation successfull! The results are: 7, 6.0, and 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:

class connectionError(RuntimeError):
def __init__(self, value):
self.value = value
try:
raise connectionError('Bad hostname')
except connectionError as err:
print(err.value)
Output: Bad hostname

Beachten Sie, dass Verbindungsfehler , ist in diesem Fall eine benutzerdefinierte Klasse, die Sie jederzeit in Ihrem Programm aufrufen können.

Verwandt: 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:

class errors(Exception):
pass
class sixFiveError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
try:
raise sixFiveError(6-5,'This substraction is not allowed')
except sixFiveError as e:
print('There was an error:', e.message)
Output: There was an error: This substraction is not allowed

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:

# First call the base exception classes:
class errors(Exception):
pass
# Next, derive your own exception from the base class:
class FloatError(errors):
def __init__(self, value, message):
self.value = value
self.message = message
# Create a function to add two floats:
def addTwoFloat(a, b):
if (type(a) and type(b)) != float:
raise FloatError(a+b,'Numbers must be float to add')
else:
print(a + b)
addTwoFloat(4, 7)
Output: __main__.FloatError: (11, 'Numbers must be float to add')

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:

print(FloatError)
Output:

FloatError ist 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:

print(FloatError)
Output: NameError: name 'FloatError' is not defined

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.

Teilen Teilen Tweet Email So debuggen Sie Ihren Python-Code

Rüsten Sie sich mit dem Know-how aus, um jeden Python-Bug auf Ihrem Weg zu beseitigen.

Weiter lesen
Verwandte Themen
  • Programmierung
  • Python
  • Codierungs-Tutorials
Über den Autor Idisou Omisola(94 veröffentlichte Artikel)

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 Technologie zu weisen, motiviert ihn, mehr zu schreiben.

Mehr von Idowu Omisola

Abonniere unseren Newsletter

Abonnieren Sie unseren Newsletter für technische Tipps, Rezensionen, kostenlose E-Books und exklusive Angebote!

Klicken Sie hier, um sich zu abonnieren