Wir haben bisher grundlegende Python-Elemente von Satz 1 bis 4 erkundet ( Set 1 | Satz 2 | Satz 3 | Satz 4 ).
In diesem Artikel besprechen wir anhand geeigneter Beispiele, wie Ausnahmen in Python mithilfe der Anweisungen „try“, „exclusive“ und „finally“ behandelt werden.
Es gibt zwei Arten von Fehlern in Python, d. h. Syntaxfehler und Ausnahmen . Fehler sind Probleme in einem Programm, aufgrund derer das Programm die Ausführung stoppt. Andererseits werden Ausnahmen ausgelöst, wenn einige interne Ereignisse auftreten, die den normalen Programmablauf verändern.
Verschiedene Arten von Ausnahmen in Python:
In Python gibt es mehrere integrierte Python-Ausnahmen, die ausgelöst werden können, wenn während der Ausführung eines Programms ein Fehler auftritt. Hier sind einige der häufigsten Arten von Ausnahmen in Python:
- Syntax-Fehler: Diese Ausnahme wird ausgelöst, wenn der Interpreter einen Syntaxfehler im Code feststellt, z. B. ein falsch geschriebenes Schlüsselwort, ein fehlender Doppelpunkt oder eine unausgeglichene Klammer.
- TypeError : Diese Ausnahme wird ausgelöst, wenn eine Operation oder Funktion auf ein Objekt des falschen Typs angewendet wird, beispielsweise das Hinzufügen einer Zeichenfolge zu einer Ganzzahl.
- Namensfehler : Diese Ausnahme wird ausgelöst, wenn im aktuellen Bereich kein Variablen- oder Funktionsname gefunden wird.
- Indexfehler : Diese Ausnahme wird ausgelöst, wenn ein Index außerhalb des gültigen Bereichs für eine Liste, ein Tupel oder andere Sequenztypen liegt.
- Schlüsselfehler : Diese Ausnahme wird ausgelöst, wenn ein Schlüssel nicht in einem Wörterbuch gefunden wird.
- Wertfehler : Diese Ausnahme wird ausgelöst, wenn eine Funktion oder Methode mit einem ungültigen Argument oder einer ungültigen Eingabe aufgerufen wird, z. B. beim Versuch, eine Zeichenfolge in eine Ganzzahl umzuwandeln, wenn die Zeichenfolge keine gültige Ganzzahl darstellt.
- AttributeError : Diese Ausnahme wird ausgelöst, wenn ein Attribut oder eine Methode nicht für ein Objekt gefunden wird, beispielsweise beim Versuch, auf ein nicht vorhandenes Attribut einer Klasseninstanz zuzugreifen.
- IOError : Diese Ausnahme wird ausgelöst, wenn ein E/A-Vorgang, z. B. das Lesen oder Schreiben einer Datei, aufgrund eines Eingabe-/Ausgabefehlers fehlschlägt.
- ZeroDivisionError : Diese Ausnahme wird ausgelöst, wenn versucht wird, eine Zahl durch Null zu dividieren.
- Importfehler : Diese Ausnahme wird ausgelöst, wenn eine Importanweisung ein Modul nicht finden oder laden kann.
Dies sind nur einige Beispiele für die vielen Arten von Ausnahmen, die in Python auftreten können. Es ist wichtig, Ausnahmen in Ihrem Code mithilfe von Try-Exception-Blöcken oder anderen Fehlerbehandlungstechniken ordnungsgemäß zu behandeln, um Fehler ordnungsgemäß zu behandeln und einen Programmabsturz zu verhindern.
Unterschied zwischen Syntaxfehler und Ausnahmen
Syntax-Fehler: Wie der Name schon sagt, wird dieser Fehler durch die falsche Syntax im Code verursacht. Dies führt zum Abbruch des Programms.
Beispiel:
Es liegt ein Syntaxfehler im Code vor. Der ' if'> Der Anweisung sollte ein Doppelpunkt folgen (:>), und das ' print'> Die Anweisung sollte so eingerückt werden, dass sie innerhalb von steht ' if'> Block.
Python3
amount>=> 10000> if>(amount>>2999>)> print>(>'You are eligible to purchase Dsa Self Paced'>)> |
>
>
Ausgabe:

Ausnahmen: Ausnahmen werden ausgelöst, wenn das Programm syntaktisch korrekt ist, der Code jedoch zu einem Fehler führt. Dieser Fehler stoppt nicht die Ausführung des Programms, verändert jedoch den normalen Programmablauf.
Beispiel:
Hier in diesem Code teilen wir die „Marken“ durch Null, sodass ein Fehler auftritt, der als bekannt ist „ZeroDivisionError“
Python3
marks>=> 10000> a>=> marks>/> 0> print>(a)> |
>
>
Konvertierung einer Zeichenfolge in eine Ganzzahl in Java
Ausgabe:

Im obigen Beispiel wurde der ZeroDivisionError ausgelöst, als wir versuchten, eine Zahl durch 0 zu dividieren.
Notiz: Exception ist die Basisklasse für alle Ausnahmen in Python. Sie können die Ausnahmehierarchie überprüfen Hier .
Beispiel:
1) TypeError: Diese Ausnahme wird ausgelöst, wenn eine Operation oder Funktion auf ein Objekt des falschen Typs angewendet wird. Hier ist ein Beispiel:
Hier ein 'TypeError' wird ausgelöst, da beide Datentypen unterschiedlich sind und hinzugefügt werden.
Python3
x>=> 5> y>=> 'hello'> z>=> x>+> y> |
>
>
output: Traceback (most recent call last): File '7edfa469-9a3c-4e4d-98f3-5544e60bff4e.py', line 4, in z = x + y TypeError: unsupported operand type(s) for +: 'int' and 'str'>
Versuchen Sie es mit dem Catch-Block, um das Problem zu beheben:
Der Code versucht, eine Ganzzahl hinzuzufügen ( ' x'> ) und eine Zeichenfolge ( ' y'> ) zusammen, was keine gültige Operation ist und a auslöst ' TypeError'> . Der Code verwendet a ' try'> Und ' except'> Block, um diese Ausnahme abzufangen und eine Fehlermeldung auszugeben.
Python3
x>=> 5> y>=> 'hello'> try>:> >z>=> x>+> y> except> TypeError:> >print>(>'Error: cannot add an int and a str'>)> |
>
>Ausgabe
Diskette
Error: cannot add an int and a str>
Try and Except-Anweisung – Ausnahmen abfangen
Try- und Except-Anweisungen werden zum Abfangen und Behandeln von Ausnahmen in Python verwendet. Anweisungen, die Ausnahmen auslösen können, werden in der Try-Klausel gespeichert und die Anweisungen, die die Ausnahme behandeln, werden in die Ausnahme-Klausel geschrieben.
Beispiel: Hier versuchen wir, auf das Array-Element zuzugreifen, dessen Index außerhalb der Grenze liegt, und die entsprechende Ausnahme zu behandeln.
Python3
a>=> [>1>,>2>,>3>]> try>:> >print> (>'Second element = %d'> %>(a[>1>]))> >print> (>'Fourth element = %d'> %>(a[>3>]))> except>:> >print> (>'An error occurred'>)> |
>
>Ausgabe
Second element = 2 An error occurred>
Im obigen Beispiel werden die Anweisungen, die den Fehler verursachen können, in die try-Anweisung (in unserem Fall die zweite print-Anweisung) eingefügt. Die zweite print-Anweisung versucht, auf das vierte Element der Liste zuzugreifen, das nicht vorhanden ist, und löst eine Ausnahme aus. Diese Ausnahme wird dann von der Except-Anweisung abgefangen.
Spezifische Ausnahme abfangen
Eine try-Anweisung kann mehr als eine Except-Klausel haben, um Handler für verschiedene Ausnahmen anzugeben. Bitte beachten Sie, dass höchstens ein Handler ausgeführt wird. Beispielsweise können wir im obigen Code IndexError hinzufügen. Die allgemeine Syntax zum Hinzufügen spezifischer Ausnahmen lautet:
try: # statement(s) except IndexError: # statement(s) except ValueError: # statement(s)>
Beispiel: Bestimmte Ausnahmen in Python abfangen
Der Code definiert eine Funktion ' fun(a)'> das rechnetb>basierend auf der Eingabea>. Wenna>kleiner als 4 ist, versucht es eine Division durch Null, was zu a führt ' ZeroDivisionError'> . Der Code ruft auffun(3)>Undfun(5)>innerhalb eines Try-Except-Blocks. Es kümmert sich um dieZeroDivisionError>fürfun(3)>und Drucke ZeroDivisionError ist aufgetreten und wurde behandelt. Der ' NameError'> Block wird nicht ausgeführt, da keine vorhanden sind ' NameError'> Ausnahmen im Code.
Python3
def> fun(a):> >if> a <>4>:> >b>=> a>/>(a>->3>)> >print>(>'Value of b = '>, b)> > try>:> >fun(>3>)> >fun(>5>)> except> ZeroDivisionError:> >print>(>'ZeroDivisionError Occurred and Handled'>)> except> NameError:> >print>(>'NameError Occurred and Handled'>)> |
>
>Ausgabe
ZeroDivisionError Occurred and Handled>
Wenn Sie die Zeile fun(3) kommentieren, lautet die Ausgabe
NameError Occurred and Handled>
Die obige Ausgabe ist so, weil NameError auftritt, sobald Python versucht, auf den Wert von b zuzugreifen.
Versuchen Sie es mit der Else-Klausel
In Python können Sie auch die else-Klausel im try-exclusive-Block verwenden, die nach allen excel-Klauseln vorhanden sein muss. Der Code tritt nur dann in den else-Block ein, wenn die try-Klausel keine Ausnahme auslöst.
Versuchen Sie es mit der else-Klausel
Mittelwert vs. Durchschnitt
Der Code definiert eine Funktion AbyB(a, b)> das rechnetc>als ((a+b) / (a-b)) und behandelt ein PotentialZeroDivisionError>. Das Ergebnis wird gedruckt, wenn kein Fehler bei der Division durch Null vorliegt. Berufung AbyB(2.0, 3.0)> berechnet und druckt-5.0>, während des Anrufs AbyB(3.0, 3.0)> versucht, durch Null zu dividieren, was zu a führt ZeroDivisionError> , was gefangen wird und a/b ergibt 0 gedruckt wird.
Python3
def> AbyB(a , b):> >try>:> >c>=> ((a>+>b)>/> (a>->b))> >except> ZeroDivisionError:> >print> (>'a/b result in 0'>)> >else>:> >print> (c)> AbyB(>2.0>,>3.0>)> AbyB(>3.0>,>3.0>)> |
>
>
Ausgabe:
-5.0 a/b result in 0>
Endlich Schlüsselwort in Python
Python stellt ein Schlüsselwort bereit Endlich , der immer nach den Try- und Except-Blöcken ausgeführt wird. Der letzte Block wird immer nach der normalen Beendigung des Try-Blocks oder nach der Beendigung des Try-Blocks aufgrund einer Ausnahme ausgeführt.
Syntax:
try: # Some Code.... except: # optional block # Handling of exception (if required) else: # execute if no exception finally: # Some code .....(always executed)>
Beispiel:
Der Code versucht, eine ganzzahlige Division durch Null durchzuführen, was zu a führt ZeroDivisionError> . Es fängt die Ausnahme ab und druckt Kann nicht durch Null geteilt werden. Unabhängig von der Ausnahme ist diefinally>Block wird ausgeführt und gedruckt Dies wird immer ausgeführt.
Python3
String-zu-Int-Konvertierung in Java
try>:> >k>=> 5>/>/>0> >print>(k)> except> ZeroDivisionError:> >print>(>'Can't divide by zero'>)> finally>:> >print>(>'This is always executed'>)> |
>
>
Ausgabe:
Can't divide by zero This is always executed>
Ausnahme auslösen
Der Aussage erhöhen ermöglicht es dem Programmierer, das Auftreten einer bestimmten Ausnahme zu erzwingen. Das einzige Argument in raise gibt die auszulösende Ausnahme an. Dies muss entweder eine Ausnahmeinstanz oder eine Ausnahmeklasse sein (eine Klasse, die von Exception abgeleitet ist).
Dieser Code löst absichtlich eine ausNameError>mit der Nachricht Hallo Verwendung derraise>Aussage innerhalb einestry>Block. Dann fängt es dasNameError>Ausnahme: Drucke Eine Ausnahme, und löst dieselbe Ausnahme mit erneut ausraise>. Dies zeigt, wie Ausnahmen in Python ausgelöst und behandelt werden können, was benutzerdefinierte Fehlermeldungen und eine weitere Ausbreitung von Ausnahmen ermöglicht.
Python3
try>:> >raise> NameError(>'Hi there'>)> except> NameError:> >print> (>'An exception'>)> >raise> |
>
>
Die Ausgabe des obigen Codes wird einfach als Ausnahme ausgegeben, aber aufgrund der Raise-Anweisung in der letzten Zeile tritt auch in der letzten Zeile ein Laufzeitfehler auf. Die Ausgabe auf Ihrer Befehlszeile sieht also so aus
Traceback (most recent call last): File '/home/d6ec14ca595b97bff8d8034bbf212a9f.py', line 5, in raise NameError('Hi there') # Raise Error NameError: Hi there> Vorteile der Ausnahmebehandlung:
- Verbesserte Programmzuverlässigkeit : Durch die ordnungsgemäße Behandlung von Ausnahmen können Sie verhindern, dass Ihr Programm aufgrund unerwarteter Fehler oder Eingaben abstürzt oder falsche Ergebnisse liefert.
- Vereinfachte Fehlerbehandlung : Mit der Ausnahmebehandlung können Sie den Fehlerbehandlungscode von der Hauptprogrammlogik trennen und so das Lesen und Verwalten Ihres Codes erleichtern.
- Saubererer Code: Mit der Ausnahmebehandlung können Sie die Verwendung komplexer bedingter Anweisungen zur Fehlerprüfung vermeiden, was zu saubererem und besser lesbarem Code führt.
- Einfacheres Debuggen : Wenn eine Ausnahme ausgelöst wird, gibt der Python-Interpreter einen Traceback aus, der den genauen Ort anzeigt, an dem die Ausnahme aufgetreten ist, was das Debuggen Ihres Codes erleichtert.
Nachteile der Ausnahmebehandlung:
- Leistungsaufwand: Die Ausnahmebehandlung kann langsamer sein als die Verwendung bedingter Anweisungen zur Fehlerprüfung, da der Interpreter zusätzliche Arbeit leisten muss, um die Ausnahme abzufangen und zu behandeln.
- Erhöhte Codekomplexität : Die Ausnahmebehandlung kann Ihren Code komplexer machen, insbesondere wenn Sie mehrere Arten von Ausnahmen behandeln oder eine komplexe Fehlerbehandlungslogik implementieren müssen.
- Mögliche Sicherheitsrisiken: Unsachgemäß behandelte Ausnahmen können möglicherweise vertrauliche Informationen preisgeben oder Sicherheitslücken in Ihrem Code schaffen. Daher ist es wichtig, Ausnahmen sorgfältig zu behandeln und zu vermeiden, dass zu viele Informationen über Ihr Programm preisgegeben werden.
Insgesamt überwiegen die Vorteile der Ausnahmebehandlung in Python die Nachteile, es ist jedoch wichtig, sie umsichtig und sorgfältig einzusetzen, um die Codequalität und Programmzuverlässigkeit aufrechtzuerhalten.
Dieser Artikel wurde von Nikhil Kumar Singh (nickzuck_007) verfasst.