Heim > Artikel > Backend-Entwicklung > Python-Ausnahmebehandlung
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 TypValueerror Ü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. AusnahmebehandlungUm 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-finally-Anweisung try-finally-Anweisung führt den letzten Code aus, unabhängig davon, ob eine Ausnahme auftritt. versuchen Sie:
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. AusnahmeparameterEine 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. InstanzDas 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 Zahlenungültiges Literal für int() mit Basis 10: 'xyz' Ausnahmen auslösenWir können die Raise-Anweisung verwenden, um selbst Ausnahmen auszulösenDas 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. InstanzEine 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