Latest web development tutorials

Python Ausnahmebehandlung

Python bietet zwei sehr wichtige Funktionen Ausnahmen und Fehler Python-Programm zu behandeln, die im Betrieb erscheint. Sie können diese Funktion zu debuggen Python-Programme verwenden.

  • Ausnahmebehandlung: Python Tutorial-Website spezifische Beschreibung.
  • Behaupten (Assertions): Python Tutorial-Website spezifische Beschreibung.

Python Standard Ausnahmen

Der Ausnahme-Namen Beschreibung
BaseException Die Basisklasse für alle Ausnahmen
Systemexit Interpreter Anfrage zu beenden
KeyboardInterrupt User-Interrupt ausführen (in der Regel geben Sie ^ C)
Ausnahme Allgemeiner Fehler Basisklasse
StopIteration Iterator keine Werte mehr
GeneratorExit Generator (Generator) zu benachrichtigen, den anormalen Ausgang
Standarderror Alle Standard-Basisklasse eingebaut für Ausnahmen
ArithmeticError Alle numerischen Fehler Basisklasse
FloatingPointError Gleitkomma-Rechenfehler
OverflowError Numerische Operationen überschritten die Höchstgrenze
Zerodivisionerror Zusätzlich zu (oder Modul) Null (alle Datentypen)
AssertionError Assertionsfehler
Attribute Dieses Objekt hat kein Eigentum
EOFError Kein Einbau-Eingang und Ankunft EOF-Markierung
EnvironmentError Betriebssystemfehler Basisklasse
IOError Input / Output-Operationen zum Scheitern verurteilt
OSError Betriebssystemfehler
WindowsError Systemaufruf fehlgeschlagen
Import Import-Modul / Objekt ist fehlgeschlagen
LookupError Ungültige Klassen-Datenbank-Abfragen
Indexerror Ohne diese Sequenz Index (Index)
KeyError Ohne diesen Schlüssel-Mapping
Memory Speicherüberlauf-Fehler (für Python-Interpreter ist nicht tödlich)
Nameerror Undeclared / initialisieren das Objekt (nicht-Eigenschaft)
UnboundLocalError Zugang nicht initialisierte lokale Variable
Reference Schwache Referenzobjekte (Schwache Referenz) haben versucht, die Garbage Collection für den Zugriff von
Runtime Allgemeine Laufzeitfehler
NotImplementedError Das Verfahren ist nicht umgesetzt worden
Syntax Python-Syntaxfehler
IndentationError einrücken Fehler
TabError Tab und Raum-Mix
Systemerror Normalerweise Interpreter Systemfehler
Auslöser Type Ungültige Betriebsart
Valueerror Ungültige Argumente übergeben
UnicodeError Unicode-Fehlern
UnicodeDecodeError Unicode-Decodierung von Fehler
UnicodeEncodeError Unicode-Codefehler
UnicodeTranslateError Unicode-Konvertierungsfehler
Warnung Warnung Basisklasse
DeprecationWarning Warnungen über veraltete Funktionen
FutureWarning Warnungen über die zukünftige Struktur der Semantik haben sich geändert
Überlaufwarnung Die alte Warnung automatisch auf eine lange Ganzzahl (long) gefördert von
PendingDeprecationWarning Es wird eine Warnung über die Abfalleigenschaften sein
RuntimeWarning Suspicious Laufzeitverhalten (Laufzeitverhalten) Warnung
SyntaxWarning Syntax Warnungen verdächtig
UserWarning Warnt den Benutzer, Code-Generierung

Was ist nicht normal?

Diese Ausnahme ist ein Ereignis, das während der Ausführung des Programms zu beeinflussen die normale Programmausführung auftreten.

Unter normalen Umständen, wenn Python-Programme behandeln nicht richtig eine Ausnahme auftritt.

Ausnahme ist Python-Objekt repräsentiert einen Fehler.

Eine Ausnahme tritt auf, wenn das Python-Skript müssen wir es erfassen behandeln, sonst wird das Programm beendet werden.


Ausnahmebehandlung

Sie können die Ausnahme mit try / except-Anweisung fangen.

try / except-Anweisung verwendet wird Fehler im try-Block zu erfassen, so dass außer Anweisung, um die Ausnahme zu fangen und die Informationen verarbeiten.

Wenn Sie tritt nicht eine Ausnahme soll, wenn das Ende des Programms, nur versuchen, es im Inneren zu fangen.

Syntax:

Das Folgende ist eine einfache Versuch .... außer ... else Syntax:

try:
<语句>        #运行别的代码
except <名字>:
<语句>        #如果在try部份引发了'name'异常
except <名字>,<数据>:
<语句>        #如果引发了'name'异常,获得附加的数据
else:
<语句>        #如果没有异常发生

versuchen funktioniert, wenn eine try-Anweisung beginnt, wird Python im Rahmen des aktuellen Programms markiert werden, so dass, wenn eine Anomalie kann wieder hier, versuchen Klausel zuerst ausgeführt erfolgt sein wird, was geschieht, hängt davon bei der Ausführung ob es eine Ausnahme.

  • Wenn eine Ausnahme auftritt, wenn Sie ausführen versuchen, wenn die Anweisung nach, Python zurück springen, um zu versuchen und die erste passende except-Klausel ausführen wird die Ausnahme, Ausnahmeverarbeitung abgeschlossen ist, auf der Steuerfluss durch den gesamten try-Anweisung (es sei denn, eine Ausnahme verarbeitet Zeit und lösen eine neue Ausnahmen).
  • Wenn eine Abnormalität nach den Jahren in der try-Anweisung auftritt, aber keine passende except-Klausel wird eine Ausnahme von der Spitze der Versuch vorgelegt werden, oder an die Spitze des Programms (die das Programm zu beenden, und eine Standard-Fehlermeldung gedruckt werden).
  • Wenn eine Ausnahme auftritt, wenn Sie versuchen Klausel nicht ausgeführt wird, Python else-Anweisung wird nach der Anweisung (wenn dann anderes), dann wird der Ablauf der Steuerung durch den gesamten try-Anweisung ausgeführt werden.

Beispiele

Hier ist ein einfaches Beispiel ist, öffnet es eine Datei, die Inhalte der Dateiinhalt geschrieben wird, und ist nicht eine Ausnahme auftritt:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

Das obige Programm Ausgabe:

$ python test.py 
内容写入文件成功
$ cat testfile       # 查看写入的内容
这是一个测试文件,用于测试异常!!

Beispiele

Hier ist ein einfaches Beispiel, das eine Datei öffnet, die geschriebenen Inhalte in den Dateiinhalt, aber die Datei nicht über die Schreibberechtigung, eine Ausnahme aufgetreten:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
except IOError:
    print "Error: 没有找到文件或读取文件失败"
else:
    print "内容写入文件成功"
    fh.close()

Vor der Ausführung des Codes, um die Prüfung zu erleichtern, können wir erste Schreibzugriff auf die Datei zu entfernen Testdatei Befehl wie folgt:

chmod -w testfile

Dann führen Sie den Code oben:

$ python test.py 
Error: 没有找到文件或读取文件失败

Jedoch ohne jede Art von Ausnahme Verwendung mit

Sie können ohne jede Ausnahme Typ außer die folgenden Beispiele verwenden:

try:
    正常的操作
   ......................
except:
    发生异常,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

Über Art und Weise versuchen-except-Anweisung alle Ausnahmen zu fangen, die auftreten. Aber das ist kein guter Weg, durch dieses Programm können wir die spezifische Ausnahme Informationen nicht identifizieren. Denn es fängt alle Ausnahmen.


Und mit der Verwendung von mehreren Arten von Ausnahmen ausgenommen

Sie können auch die gleichen, außer Aussagen verwenden, um mehrere Ausnahmen zu behandeln, wie folgt:

try:
    正常的操作
   ......................
except(Exception1[, Exception2[,...ExceptionN]]]):
   发生以上多个异常中的一个,执行这块代码
   ......................
else:
    如果没有异常执行这块代码

Try-finally-Anweisung

Try-finally-Anweisung, ob eine Ausnahme die endgültige Code ausführen auftritt.

try:
<语句>
finally:
<语句>    #退出try时总会执行
raise

Beispiele

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    fh.write("这是一个测试文件,用于测试异常!!")
finally:
    print "Error: 没有找到文件或读取文件失败"

Wenn Sie eine Datei öffnen, keine Schreibberechtigung haben, ist wie folgt ausgegeben:

$ python test.py 
Error: 没有找到文件或读取文件失败

Das gleiche Beispiel kann auch wie folgt geschrieben werden:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

try:
    fh = open("testfile", "w")
    try:
        fh.write("这是一个测试文件,用于测试异常!!")
    finally:
        print "关闭文件"
        fh.close()
except IOError:
    print "Error: 没有找到文件或读取文件失败"

Wenn eine Ausnahme im try-Block geworfen, blockieren die schließlich unmittelbar von Code.

schließlich blockieren alle Aussagen nach der Ausführung, wird die Ausnahme erneut ausgelöst und die Ausführung außer Blockcode.

Inhalt des Parameters ist der Ausnahme unterschiedlich.


Abnormal Parameter

Eine Ausnahme kann Parameter übernehmen, als Abnormalitätsinformation Ausgabeparameter.

Sie können mit Ausnahme der Ausnahme durch Parameter Aussagen zu fangen, wie folgt:

try:
    正常的操作
   ......................
except ExceptionType, Argument:
    你可以在这输出 Argument 的值...

Ausreißer Variablen typischerweise in der empfangenen Ausnahmeanweisung enthalten. Variablen in Form von Tupeln kann einen oder mehrere Werte zu erhalten.

Tuple enthält in der Regel den Fehlerstring, falsche Nummer, falsche Lage.

Beispiele

Die folgenden sind Beispiele einer einzigen Ausnahme:

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定义函数
def temp_convert(var):
    try:
        return int(var)
    except ValueError, Argument:
        print "参数没有包含数字\n", Argument

# 调用函数
temp_convert("xyz");

Ergebnisse der obigen Verfahren sind wie folgt:

$ python test.py 
参数没有包含数字
invalid literal for int() with base 10: 'xyz'

Auslöser abnormal

Wir können die Anweisung zu erhöhen sich eine Ausnahme auslösen

erhöhen Syntax lautet wie folgt:

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

Ausnahmeanweisung ist die Art der Ausnahme (beispielsweise Nameerror) Parameter ist ein abnormal Parameterwert. Dieser Parameter ist optional, wenn nicht zur Verfügung gestellt, die Ausnahme Argument ist "None".

Das letzte Argument ist optional (in der Praxis selten verwendet), wenn es eine Spur Ausnahmeobjekt ist.

Beispiele

Eine Ausnahme kann eine Zeichenfolge, eine Klasse oder ein Objekt sein. Python Ausnahme vom Kernel zur Verfügung gestellt, die meisten sind Instanzen der Klasse, die als Parameter in einer Instanz einer Klasse ist.

Sehr einfache Definition einer Ausnahme, wie folgt:

def functionName( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

Hinweis: Um die Ausnahme zu fangen, "außer" Anweisung muss nützlich sein , die gleiche Ausnahme Klassenobjekt oder die Zeichenfolge zu werfen.

Zum Beispiel erfassen wir mehr als eine Ausnahme ", mit Ausnahme von" Anweisung lautet wie folgt:

try:
    正常逻辑
except "Invalid level!":
    触发自定义异常    
else:
    其余代码

Beispiele

#!/usr/bin/python
# -*- coding: UTF-8 -*-

# 定义函数
def mye( level ):
    if level < 1:
        raise Exception("Invalid level!", level)
        # 触发异常后,后面的代码就不会再执行

try:
    mye(0)                // 触发异常
except "Invalid level!":
    print 1
else:
    print 2

Die Umsetzung des obigen Codes ist die Ausgabe:

$ python test.py 
Traceback (most recent call last):
  File "test.py", line 11, in <module>
    mye(0)
  File "test.py", line 7, in mye
    raise Exception("Invalid level!", level)
Exception: ('Invalid level!', 0)

Benutzerdefinierte Ausnahmen

Durch eine neue Ausnahmeklasse zu schaffen, kann das Programm ihre eigenen Ausnahmen nennen. Typische Ausnahmen sollten von der Exception-Klasse geerbt werden, entweder direkt oder indirekt.

verbunden ist Folge mit Runtime Instanz Instanz eine Klasse erstellen, ist die Basisklasse Runtime, zum Ausgeben von zusätzlichen Informationen, wenn eine Ausnahme ausgelöst wird.

Im try-Block führt der Benutzer eine Blockanweisung außer benutzerdefinierte Ausnahme wird die Variable e verwendet Instanzen Networkerror Klasse zu erstellen.

class Networkerror(RuntimeError):
    def __init__(self, arg):
        self.args = arg

Nachdem Sie die oben genannten Kategorien zu definieren, können Sie die Ausnahme auslösen, wie folgt:

try:
    raise Networkerror("Bad hostname")
except Networkerror,e:
    print e.args