Um die Verwendung der Try-Except-Ausnahmebehandlung zu verstehen, wird, vereinfacht gesagt, wenn während der Ausführung des Programms im Try-Block eine Ausnahme auftritt, die Ausnahme erfasst und der entsprechende Except-Block aktiviert Um die Ausnahme zu behandeln, stellt sich hier die Frage, wie der entsprechende Ausnahmeblock gefunden wird.
Wir wissen, dass ein Try-Block auch mehreren Ausnahmeblöcken entsprechen kann und ein Ausnahmeblock mehrere Ausnahmen gleichzeitig verarbeiten kann. Wenn wir einen Ausnahmeblock verwenden möchten, um alle Ausnahmen zu behandeln, können wir so schreiben:
versuchen: #...außer Ausnahme: #...
In diesem Fall für die try block Bei jeder Ausnahme, die auftreten kann, wird der Python-Interpreter zur Verarbeitung an den einzigen Ausnahmeblock übergeben, da sein Parameter Exception ist, was bedeutet, dass jede Art von Ausnahme empfangen werden kann.
Beachten Sie, dass für außer, das jede Ausnahme empfangen kann, eine Ausnahme oder ohne Parameter folgen kann, die Bedeutung jedoch dieselbe ist.
Hier werden wir Exception im Detail vorstellen. Sie sollten wissen, dass Python eine große Anzahl von Ausnahmeklassen bereitstellt, um verschiedene Ausnahmen darzustellen, die im Programm auftreten können, und dass zwischen diesen Ausnahmeklassen strenge Vererbungsbeziehungen bestehen. Abbildung 1 zeigt die Vererbungsbeziehung zwischen den allgemeinen Ausnahmeklassen von Python.
Wie aus Abbildung 1 ersichtlich ist, ist BaseException die Basisklasse aller Ausnahmeklassen in Python, aber für uns ist die Exception-Klasse die wichtigste, denn in Das Programm Verschiedene Ausnahmen, die auftreten können, werden von Exception geerbt.
Wenn der Benutzer daher eine benutzerdefinierte Ausnahme implementieren möchte, sollte er BaseException nicht erben, sondern die Exception-Klasse. Informationen zum Anpassen einer Ausnahmeklasse finden Sie im Abschnitt „Benutzerdefinierte Python-Ausnahmeklassen“.
Wenn der Try-Block das Ausnahmeobjekt erfasst, vergleicht der Python-Interpreter nacheinander den Ausnahmetyp mit der von jedem Ausnahmeblock angegebenen Ausnahmeklasse, wenn sich die erfasste Ausnahmeklasse von der Ausnahmeklasse nach einem Ausnahmeblock unterscheidet , Wenn die Ausnahmeklasse dieselbe oder eine Unterklasse der Ausnahmeklasse ist, ruft der Python-Interpreter diesen Ausnahmeblock auf, um die Ausnahme zu behandeln. Andernfalls führt der Python-Interpreter den Vergleich fort, bis er mit der letzten Ausnahmeklasse verglichen wird Der Vergleich ist nicht erfolgreich. Dies beweist, dass die Ausnahme nicht behandelt werden kann.
Abbildung 2 zeigt den gesamten Prozess vom Abfangen der Ausnahme bis zur Behandlung der Ausnahme, wenn im Programm im Try-Block eine Ausnahme auftritt.
Sehen wir uns ein paar einfache Beispiele für die Ausnahmeerfassung an:
try: a = int(input("输入 a:")) b = int(input("输入 b:")) print( a/b ) except ValueError: print("数值错误:程序只能接收整数参数") except ArithmeticError: print("算术错误") except Exception: print("未知异常")
In diesem Programm kann es je nach Benutzereingabe der a- und b-Werte passieren Ursache ValueError, ArithmeticError-Ausnahme:
Wenn das vom Benutzer eingegebene a oder b andere Zeichen als Zahlen sind, tritt eine ValueError-Ausnahme auf. Der try-Block erfasst diese Art von Ausnahme. und der Python-Interpreter wird aufgerufen, um die Ausnahme zu behandeln.
Wenn die vom Benutzer eingegebenen Zahlen a und b sind, der Wert von b jedoch 0 ist Der Divisor darf beim Durchführen einer Divisionsoperation nicht 0 sein. Daher tritt eine ArithmeticError-Ausnahme auf, und der Try-Block fängt die Ausnahme ab und der Python-Interpreter ruft den zweiten Except-Block auf, um die Ausnahme zu behandeln >
Natürlich kann es während der Ausführung des Programms auch andere Gründe geben. Wenn eine Ausnahme auftritt, kann sie vom Try-Block abgefangen werden, und Python ruft den letzten Except-Block auf, um sie zu verarbeiten.Python-Tutorial
“Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Python-Ausnahmebehandlungsmechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!