Heim  >  Artikel  >  Backend-Entwicklung  >  Detaillierte grafische Erläuterung der Python-Ausnahmebehandlungsmethoden

Detaillierte grafische Erläuterung der Python-Ausnahmebehandlungsmethoden

高洛峰
高洛峰Original
2017-03-23 14:42:531844Durchsuche

Python bietet zwei sehr wichtige Funktionen zur Behandlung von Ausnahmen und Fehlern, die beim Ausführen von Python-Programmen auftreten. Mit dieser Funktion können Sie Python-Programme debuggen.

Wir können Leerlauf -> F1 öffnen, um das Dokument anzuzeigen. Es enthält viele Ausnahmetypen, wie im Bild gezeigt:

Detaillierte grafische Erläuterung der Python-Ausnahmebehandlungsmethoden

Was ist eine Ausnahme?

Eine Ausnahme ist ein Ereignis, das während der Programmausführung auftritt und die normale Ausführung des Programms beeinträchtigt.

Im Allgemeinen tritt eine Ausnahme auf, wenn Python das Programm nicht normal verarbeiten kann.

Ausnahmen sind Python-Objekte, die einen Fehler darstellen.

Wenn in einem Python-Skript eine Ausnahme auftritt, müssen wir sie abfangen und behandeln, sonst bricht das Programm die Ausführung ab.

Ausnahmebehandlung

Um Ausnahmen abzufangen, können try/exclusive-Anweisungen verwendet werden.

Die Try/Except-Anweisung wird verwendet, um Fehler im Try-Anweisungsblock zu erkennen, sodass die Except-Anweisung die Ausnahmeinformationen erfassen und verarbeiten kann.

Wenn Sie Ihr Programm nicht beenden möchten, wenn eine Ausnahme auftritt, versuchen Sie es einfach abzufangen.

Syntax:

Das Folgende ist die Syntax eines einfachen Versuchens....außer...anders:

try:

        #运行别的代码

except

        #如果在try部份引发了'name'异常

except ,:

        #如果引发了'name'异常,获得附加的数据

else:

        #如果没有异常发生

Das Arbeitsprinzip von try besteht darin, dass nach dem Start ein Versuch erfolgt Anweisung markiert Python den Kontext des aktuellen Programms, sodass Sie hierher zurückkehren können, wenn eine Ausnahme auftritt. Die try-Klausel wird zuerst ausgeführt, und was als nächstes passiert, hängt davon ab, ob während der Ausführung eine Ausnahme auftritt.

Wenn eine Ausnahme auftritt, wenn die Anweisung nach dem Versuch ausgeführt wird, springt Python zurück, um zu versuchen, die erste Ausnahmeklausel auszuführen, die der Ausnahme entspricht. Nachdem die Ausnahme behandelt wurde, durchläuft der Kontrollfluss die gesamte try-Anweisung (Es sei denn, es wird eine neue Ausnahme ausgelöst, wenn die Ausnahme behandelt wird).

#Wenn in der Anweisung nach dem Versuch eine Ausnahme auftritt, es aber keine passende Ausnahmeklausel gibt, wird die Ausnahme an den oberen Versuch oder an die oberste Ebene des Programms weitergeleitet (dadurch wird das Programm beendet und Drucken Sie die Fehlermeldung der Provinz aus).

#Wenn beim Ausführen der try-Klausel keine Ausnahme auftritt, führt Python die Anweisung nach der else-Anweisung aus (sofern eine else-Anweisung vorhanden ist) und der Kontrollfluss durchläuft dann die gesamte try-Anweisung.

Beispiel

Das Folgende ist ein einfaches Beispiel, es öffnet eine Datei, schreibt den Inhalt in die Datei und es tritt keine Ausnahme auf:

#!/usr/bin/python

try:

   fh = open("testfile" "w")

   fh.write("This is my test file for exception handling!!")

except IOError:

   print "Error: can't find file or read data"

else:

   print "Written content in the file successfully"

   fh.close()

Das obige Programmausgabeergebnis:

 Written content in the file successfully

Beispiel

Hier ist ein einfaches Beispiel, es öffnet eine Datei in der Datei Der Inhalt wird geschrieben, aber die Datei hat keine Schreibberechtigung und es ist eine Ausnahme aufgetreten:

#!/usr/bin/python

try:

   fh = open("testfile""r")

   fh.write("This is my test file for exception handling!!")

except IOError:

   print "Error: can't find file or read data"

else:

   print "Written content in the file successfully"

Die Ergebnisse der obigen Programmausgabe:

Error: can't find file or read data

Ausnahme ohne Ausnahmetyp verwenden

Sie können „exclusive“ ohne jeden Ausnahmetyp verwenden, wie im folgenden Beispiel gezeigt:

try:

   You do your operations here;

   ......................

except:

   If there is any exception, then execute this block.

   ......................

else:

   If there is no exception then execute this block.

Die Try-Exception-Anweisung auf die obige Weise erfasst alle auftretenden Ausnahmen. Dies ist jedoch kein guter Weg, da wir mit diesem Programm keine spezifischen abnormalen Informationen identifizieren können. Weil es alle Ausnahmen abfängt.

Ausnahme bei mehreren Ausnahmetypen verwenden

Sie können dieselbe Ausnahmeanweisung auch verwenden, um mehrere Ausnahmemeldungen zu verarbeiten, wie unten gezeigt:

try:

   You do your operations here;

   ......................

except(Exception1[, Exception2[,...ExceptionN]]]):

   If there is any exception from the given exception list

   then execute this block.

   ......................

else:

   If there is no exception then execute this block.

try-finally-Anweisung

try- Die final-Anweisung führt den letzten Code aus, unabhängig davon, ob eine Ausnahme auftritt.

try:

finally:

    #退出try时总会执行

raise

Hinweis: Das können Sie Verwenden Sie die Ausnahme-Anweisung oder die Final-Anweisung, jedoch nicht beide gleichzeitig. Die else-Anweisung kann nicht zusammen mit der final-Anweisung

#!/usr/bin/python

try:

verwendet werden    fh = open("testfile""w")

   fh.write("This is my test file for exception handling!!")

finally:

   print "Error: can't find file or read data"

Wenn die geöffnete Datei keine Schreibberechtigung hat, sieht die Ausgabe wie folgt aus:

Error: can't find fileorread data

#!/usr/bin/python

🎜>try:

   fh =open("testfile""w")

   try:

      fh.write("This is my test file for exception handling!!" )

   print "Error: can't find file or read data"

Wenn eine Ausnahme im Try-Block ausgelöst wird, wird der finale Blockcode sofort ausgeführt.

Nachdem alle Anweisungen im „finally“-Block ausgeführt wurden, wird die Ausnahme erneut ausgelöst und der „exclusive“-Blockcode ausgeführt.

Der Inhalt des Parameters unterscheidet sich von der Ausnahme.

Ausnahmeparameter

Eine Ausnahme kann Parameter enthalten, die als Ausgabeparameter für Ausnahmeinformationen verwendet werden können.

Sie können Ausnahmeparameter über die Ausnahmeanweisung wie folgt erfassen:

try:

   You do your operations here;

   ......................

except ExceptionType, Argument:

   You can print value of Argument here...

Von Variablen empfangene Ausnahmewerte sind normalerweise in der Ausnahmeanweisung enthalten. Variablen in Form von Tupeln können einen oder mehrere Werte erhalten.

Tupel enthält normalerweise eine falsche Zeichenfolge, eine falsche Zahl und eine falsche Position.

Instanzen

Das Folgende sind Beispiele für eine einzelne Ausnahme:

#!/usr/bin/python

# Define a function here.

def temp_convert(var):

   try:

      returnint(var)

   except ValueError, Argument:

      print"The argument does not contain numbersn", Argument

# Call above function here.

temp_convert("xyz");

Die Ausführungsergebnisse von Das obige Programm lautet wie folgt:

The argument does not contain numbers

invalid literal for int() with base 10'xyz'

Ausnahme auslösen

Wir können die Raise-Anweisung verwenden, um die Ausnahme selbst auszulösen

Das Format der Raise-Syntax lautet wie folgt:

raise [Exception [, args [, traceback]]]

-Anweisung ist der Typ der Ausnahme (z. B. NameError) und der Parameter ist ein Ausnahmeparameterwert. Dieser Parameter ist optional. Wenn er nicht angegeben wird, ist der Ausnahmeparameter „None“.

Der letzte Parameter ist optional (wird in der Praxis selten verwendet) und ist, falls vorhanden, das Trace-Ausnahmeobjekt.

Instanz

Eine Ausnahme kann eine Zeichenfolge, eine Klasse oder ein Objekt sein. Die meisten vom Python-Kernel bereitgestellten Ausnahmen sind instanziierte Klassen, bei denen es sich um Parameter einer Instanz einer Klasse handelt.

Das Definieren einer Ausnahme ist ganz einfach wie folgt:

deffunctionName( level ):

    iflevel <code>1:

      raise "Invalid level!", level

      # The code below to this would not be executed

      # if we raise the exception

Hinweis: Um Ausnahmen abzufangen, muss die „Exception“-Anweisung dieselbe Ausnahme verwenden, um das Klassenobjekt oder die Zeichenfolge auszulösen.

Wenn wir beispielsweise die obige Ausnahme abfangen, lautet die „Exception“-Anweisung wie folgt:

try:

    Business Logic here...

except "Invalid level!":

   Exception handling here...

else:

   Rest of the code here...

Benutzerdefinierte Ausnahme

Durch das Erstellen einer neuen Ausnahmeklasse können Programme ihre eigenen Ausnahmen benennen. Ausnahmen sollten normalerweise direkt oder indirekt von der Exception-Klasse erben.

Das Folgende ist ein Beispiel, das sich auf RuntimeError bezieht. Die Basisklasse ist RuntimeError, die verwendet wird, um weitere Informationen auszugeben, wenn eine Ausnahme ausgelöst wird.

Im Try-Anweisungsblock wird die Except-Blockanweisung nach der benutzerdefinierten Ausnahme ausgeführt. Die Variable e wird zum Erstellen einer Instanz der Networkerror-Klasse verwendet.

class Networkerror(RuntimeError):

   def __init__(self, arg):

      self.args = arg

Nachdem Sie die obige Klasse definiert haben, können Sie die Ausnahme wie folgt auslösen:

try:

   raise Networkerror("Bad hostname")

except Networkerror,e:

   print e.args

Das obige ist der detaillierte Inhalt vonDetaillierte grafische Erläuterung der Python-Ausnahmebehandlungsmethoden. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn