Heim  >  Artikel  >  Backend-Entwicklung  >  Python-Ausnahmebehandlung

Python-Ausnahmebehandlung

高洛峰
高洛峰Original
2016-11-23 09:15:061100Durchsuche

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.

Ausnahmebehandlung: Im Python-Tutorial dieser Website wird es ausführlich vorgestellt.

Behauptungen: Im Python-Tutorial dieser Website werden sie ausführlich vorgestellt.

Python-Standardausnahme

Ausnahmename

Beschreibung

BaseException All Ausnahme-Basisklasse

SystemExit Interpreter-Anforderung zum Beenden

KeyboardInterrupt Benutzer unterbricht die Ausführung (normalerweise Eingabe ^C)

Ausnahme-Basisklasse für allgemeine Fehler

StopIteration Die Iterator hat keine weiteren Werte

GeneratorExit Der Generator generiert eine Ausnahme, um den Exit zu benachrichtigen

SystemExit Der Python-Interpreter fordert den Exit an

StandardError Alle integrierten Standardausnahmen Die Basisklasse

ArithmeticError Die Basisklasse für alle numerischen Berechnungsfehler

FloatingPointError Gleitkomma-Berechnungsfehler

OverflowError Numerische Operation überschreitet die maximale Grenze

ZeroDivisionError Division ( oder Modulo) Null (alle Datentypen)

AssertionError Assertionsanweisung fehlgeschlagen

AttributeError Objekt hat dieses Attribut nicht

EOFError Keine integrierte Eingabe, EOF-Flag erreicht

EnvironmentError Basisklasse für Betriebssystemfehler

IOError Ein-/Ausgabevorgang fehlgeschlagen

OSerror Betriebssystemfehler

WindowsError Systemaufruffehler

ImportError Modul-/Objektimportfehler

KeyboardInterrupt Benutzer unterbricht die Ausführung (normalerweise Eingabe von ^C)

LookupError Basisklasse für ungültige Datenabfrage

IndexError Es gibt keinen solchen Index in der Sequenz

KeyError Der Schlüssel existiert nicht in der Karte

MemoryError Nicht genügend Speicherfehler (nicht schwerwiegend für den Python-Interpreter)

NameError Nicht deklariertes/initialisiertes Objekt (keine Attribute)

UnboundLocalError Zugriff auf nicht initialisierte lokale Variablen

ReferenceError Schwache Referenz beim Versuch, auf ein Objekt zuzugreifen, das durch Müll gesammelt wurde

RuntimeError Allgemeiner Laufzeitfehler

NotImplementedError Noch nicht implementierte Methoden

SyntaxError Python-Syntaxfehler

IndentationError Einrückungsfehler

TabError Mischen von Tabulatoren und Leerzeichen

SystemError Allgemeiner Interpreter-Systemfehler

Typeerror's ungültige Operation von der Typ

Valueerror Übergabe der ungültigen Parameter

UnicodeError Unicode-Fehler

UnicodeCodeError Unicode-Dekodierungsfehler

uni> uni Codeencodeerror Unicode-Kodierung Fehler

UnicodeTranslateError Unicode-Konvertierungsfehler

Warning Basisklasse für Warnungen

DeprecationWarning Warnung über veraltete Funktionen

FutureWarning Über Konstrukt Warnung, dass sich die Semantik in Zukunft ändern wird

OverflowWarning Alte Warnung über die automatische Hochstufung zu long (long)

PendingDeprecationWarning Warnung über veraltete Funktion

RuntimeWarning Warnungen über verdächtiges Laufzeitverhalten

SyntaxWarning Warnungen über verdächtige Syntax

UserWarning Warnungen, die durch Benutzercode generiert werden

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 Versuchs....außer...else:

versuchen Sie:

try besteht darin, dass Python nach dem Starten einer try-Anweisung diese im Kontext des aktuellen Programms markiert, sodass Sie hierher zurückkehren können, wenn eine Ausnahme auftritt. Die erste Try-Klausel 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 gesendet (dadurch wird das Programm beendet und gedruckt die Standardfehlermeldung).

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("Dies ist meine Testdatei für die Ausnahmebehandlung!!")

außer IOError:

print "Fehler: Datei kann nicht gefunden oder Daten nicht gelesen werden"

else:

print „Inhalt in die Datei erfolgreich geschrieben“

fh.close()

Das obige Programmausgabeergebnis:

Inhalt wurde erfolgreich in die Datei geschrieben

Beispiel

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

#!/usr/bin/python

try:

fh = open(" testfile ", "w")

fh.write("Dies ist meine Testdatei für die Ausnahmebehandlung!!")

außer IOError:

print "Fehler: kann ' Datei nicht gefunden oder Daten nicht gelesen“

else:

print „Inhalt in die Datei erfolgreich geschrieben“

Das Ausgabeergebnis des obigen Programms:

Fehler: Datei kann nicht gefunden oder Daten nicht gelesen werden

Verwenden Sie „Exception“ ohne Ausnahmetyp

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

versuchen Sie:

Sie erledigen Ihre Operationen hier;

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

außer:

Wenn es eine Ausnahme gibt, führen Sie diesen Block aus.

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

else:

Wenn es keine Ausnahme gibt, dann führen Sie diesen Block aus.

Oben Auf diese Weise fängt die try-exclusive-Anweisung alle auftretenden Ausnahmen ab. 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:

versuchen Sie:

Sie erledigen Ihre Operationen hier;

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

außer( Exception1[, Exception2[,...ExceptionN]]]):

Wenn es eine Ausnahme aus der angegebenen Ausnahmeliste gibt,

dann führen Sie diesen Block aus. ......................

else:

Wenn es keine Ausnahme gibt, dann führen Sie diesen Block aus.

try-finally-Anweisung

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

versuchen Sie:

endlich:

beim Beenden ausführen, versuchen

erhöhen

Hinweis: Sie können die „except“-Anweisung oder die „final“-Anweisung verwenden, jedoch nicht beide gleichzeitig. Die else-Anweisung kann nicht gleichzeitig mit der final-Anweisung verwendet werden. >

try:

fh = open("testfile", "w")

fh.write(" Dies ist meine Testdatei für die Ausnahmebehandlung!!)

zum Schluss:

print „Fehler: Datei kann nicht gefunden oder Daten nicht gelesen werden“

Wenn geöffnet, verfügt die Datei über keine Schreibberechtigung und die Ausgabe lautet wie folgt:

Fehler: Datei kann nicht gefunden oder Daten nicht gelesen werden

Dasselbe Beispiel kann auch wie folgt geschrieben werden:

#!/usr/bin/python

try:

fh = open("testfile", "w")

try:

fh.write(" Dies ist meine Testdatei für die Ausnahmebehandlung!!")

schließlich:

print "Wird geschlossen die Datei“

fh.close()

außer IOError:

print „Fehler: Datei kann nicht gefunden oder Daten nicht gelesen werden“

Beim Versuch wird eine Ausnahme im Block ausgelöst und der endgültige Blockcode wird 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 erfassen, wie unten gezeigt:

Versuchen Sie:

Sie führen Ihre Operationen aus hier;

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

außer ExceptionType, Argument:

Sie kann den Wert des Arguments hier drucken...

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.

Instanz

Das Folgende ist ein Beispiel für eine einzelne Ausnahme:

#!/usr/bin/python

# Definieren Sie hier eine Funktion.

def temp_convert(var):

try:

return int(var)

außer ValueError, Argument:

print „Das Argument enthält keine Zahlenn“, Argument

# Rufen Sie hier die obige Funktion auf.

temp_convert(" xyz");

Die obigen Ergebnisse der Programmausführung lauten wie folgt:

Das Argument enthält keine Zahlen

ungültiges Literal für int() mit Basis 10: 'xyz'

Ausnahmen auslösen

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

Das Raise-Syntaxformat ist wie folgt:

Raise [Exception [ , args [, Traceback]]]

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

Das letzte Argument 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 sehr einfach, wie folgt:

def functionName(level):

if level < 1:

raise „Invalid level!“, level

# Der Code unten dazu würde nicht ausgeführt werden

# wenn wir die Ausnahme auslösen

Hinweis: Um Ausnahmen abzufangen, muss die „Exception“-Anweisung das Klassenobjekt oder die Zeichenfolge mit derselben Ausnahme auslösen.

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

try:

Geschäftslogik hier ..

außer „Ungültige Ebene!“:

Ausnahmebehandlung hier...

else:

Rest des Codes hier...

Benutzerdefinierte Ausnahmen

Programme können ihre eigenen Ausnahmen benennen, indem sie eine neue Ausnahmeklasse erstellen. 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:

Versuchen Sie:

Raise Networkerror("Bad hostname")

außer Networkerror,e:

print e.args


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