Heim > Backend-Entwicklung > Python-Tutorial > Was sind die Ausnahmen in Python? Detaillierte Einführung in Ausnahmen in Python

Was sind die Ausnahmen in Python? Detaillierte Einführung in Ausnahmen in Python

不言
Freigeben: 2018-09-26 15:54:31
Original
2852 Leute haben es durchsucht

Der Inhalt dieses Artikels befasst sich mit den Ausnahmen in Python. Die detaillierte Einführung von Ausnahmen in Python hat einen gewissen Referenzwert. Ich hoffe, dass sie für Sie hilfreich ist.

Es gibt zwei Arten von Ausnahmen in Python: 1) Syntaxfehler, der Code kann nicht ausgeführt werden, wenn er die Syntaxerkennung des Python-Interpreters nicht besteht, 2) Ausnahmen, Fehler, die während der Ausführung erkannt werden Das Python-Programm wird als Ausnahme bezeichnet. Wenn keine Ausnahmebehandlung durchgeführt wird, wird das Programm beendet und es werden Ausnahmeinformationen abgefragt, z. B.: ① Typkonvertierungsausnahme beim Konvertieren einer Zeichenfolge in eine Zahl, ② Ausnahme „Datei existiert nicht“ beim Lesen der Datei, ③ Ausnahme „Host nicht erreichbar“ während der Netzwerkverbindung. .. ·Warten. Wenn in einem Python-Skript eine Ausnahme auftritt, müssen wir diese abfangen und behandeln, andernfalls bricht das Programm die Ausführung ab. Schließlich möchte niemand, dass das von ihm verwendete Programm plötzlich abstürzt

1. Syntaxfehler

Python-Syntax Fehler sind ein Problem, auf das viele Anfänger häufig stoßen. Diese Art von Fehlern ist relativ gering. Sie können solche Fehler reduzieren, indem Sie den Code ein paar Mal eingeben

>>> if Trur
  File "<stdin>", line 1
    if Trur
          ^
SyntaxError: invalid syntax
>>> print("as"))
  File "<stdin>", line 1
    print("as"))
               ^
SyntaxError: invalid syntax
Nach dem Login kopieren

Zum Beispiel: Ein solcher Fehler ist ein Grammatikfehler. In der if-Anweisung am Ende von Zeile 1 fehlt „:“ und am Ende von Zeile 6 steht „zu viel „)“

2. Ausnahmen

1) Während der Laufzeit erkannte Fehler werden Ausnahmen genannt und die Syntaxerkennung von Python kann solche Fehler nicht erkennen.

>>> int("aa")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
ValueError: invalid literal for int() with base 10: &#39;aa&#39;
>>> f = open("aaa.txt","r")
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: &#39;aaa.txt&#39;
Nach dem Login kopieren

In der ersten und fünften Zeile treten Ausnahmen auf. Sehen Sie sich die Ausnahmen an. Ausgabeinformationen, wie gezeigt unten

2) Pythons Standard-Ausnahmeklasse

BaseException ist die Basis Klasse aller Ausnahmen, und Exception ist die Basisklasse aller regulären Fehler

Andere Die Ausnahmeklassen von Python werden nicht einzeln beschrieben. Sie können Baidu anzeigen

3. Ausnahmebehandlung

Um die Robustheit des Programms zu verbessern und zu verhindern, dass es abstürzt, wenn eine Ausnahme auftritt, ist eine Ausnahmebehandlung erforderlich erforderlich

1) try-exclusive: Anweisung

① Die einfachste Ausnahmebehandlungsanweisung lautet wie folgt, wenn der try-Anweisungsblock an Tritt eine Ausnahme auf, werden die folgenden Anweisungen nicht mehr ausgeführt (Zeile 3), die Ausnahme wird von „außer“ abgefangen und das Programm wird nach der Ausführung des Anweisungsblocks in „außer“ (z. B. Zeile 6) weiter abwärts ausgeführt. Hinweis: Auf Except folgt standardmäßig nicht der Ausnahmetyp

try:
    int("aaa")
    print("---aaa---")
except:
    print("出现异常-->英文字母不能转换为数字")
print("----------")
# 输出结果
出现异常-->英文字母不能转换为数字
----------
Nach dem Login kopieren

② Wenn wir verschiedene Ausnahmen abfangen müssen Ausnahmen, um dies zu erreichen. Wenn Sie Ausnahmeinformationen benötigen, können Sie das Ausnahmeobjekt über den Variablennamen as abrufen, z. B. Zeile 7

try:
    nu = int("100")
    print("转换后的值nu:", nu)
    i = 1 / 0
except ValueError:
    print("出现异常-->英文字母不能转换为数字")
except ZeroDivisionError as e:  # 通过 as 变量名 获取异常的对象
    print("出现异常-->除数不能为零")
    print("异常的提示信息-->", e)
except:
    pass
print("----------")


# 输出结果
转换后的值nu: 100
出现异常-->除数不能为零
异常的提示信息--> division by zero
----------
Nach dem Login kopieren

③. Wenn wir mehrere Ausnahmen gleichzeitig drücken müssen, kann die Verarbeitungsmethode verwendet werden, außer (ValueError, [ZeropisionError [, NameError]]):

try:
    i = 1 / 0
    nu = int("aa")
except (ValueError, ZeroDivisionError) as e:
    print(e)
except:
    pass
print("----------")


# 输出结果
division by zero
----------
Nach dem Login kopieren

2) try-exclusive-else- „finally“-Anweisung

① Wenn die „final“-Anweisung in „try-exclusive-else-finally“ erscheint, werden die Anweisungen im „finally“-Anweisungsblock unabhängig davon ausgeführt, ob eine Ausnahme auftritt, während die Anweisungen in the else wird nur ausgeführt, wenn keine Ausnahme auftritt

Wenn eine Ausnahme auftritt, ist try-exclusive-else-finally wie folgt

try:
    i = 1 / 0
    print("没有出现异常i值", i)
except Exception as e:
    print("出现异常-->", e)
else:
    print("没有出现异常-->执行else")
finally:
    print("不管是否出现异常,这里的语句一定会被执行")


# 输出结果
出现异常--> division by zero
不管是否出现异常,这里的语句一定会被执行
Nach dem Login kopieren

Wenn keine Ausnahme auftritt, lautet try-exclusive-else-finally wie folgt:

try:
    i = 1 / 1
    print("没有出现异常i值", i)
except Exception as e:
    print("出现异常-->", e)
else:
    print("没有出现异常-->执行else")
finally:
    print("不管是否出现异常,这里的语句一定会被执行")


# 输出结果
没有出现异常i值 1.0
没有出现异常-->执行else
不管是否出现异常,这里的语句一定会被执行
Nach dem Login kopieren

② Es gibt drei Formen: 1) versuche-außer-endlich 2) versuche-außer-else 3) versuche-endlich. Der Code wird hier nicht angezeigt

4. Ausnahmezustellung

Wenn in der Anweisung, in der die Ausnahme auftritt, keine Anweisung zur Behandlung der Ausnahme vorhanden ist Tritt auf, wird die Ausnahme nach oben gehen. Schichten durchlaufen, bis eine Anweisung gefunden wird, die eine Ausnahme behandelt, oder der Python-Interpreter das Programm beendet.

def test2():
    int("aa")

def test1():
    test2()

try:
    test1()
except Exception as e:
    print(e)
print("-----------")


# 输出结果
invalid literal for int() with base 10: &#39;aa&#39;
-----------
Nach dem Login kopieren

Wie oben, wenn Wenn in Zeile 2 von test2 eine Ausnahme auftritt, wird sie in Zeile 5 weitergeleitet. Sie wird an der Anweisung übergeben, die test2 aufruft. Es gibt hier noch keine Ausnahmebehandlungsanweisung. Sie wird weiterhin an die obere Ebene übergeben und von außer at erfasst Zeile 8

5. Ausnahme auslösen

1) Eine von Python definierte Ausnahme auslösen

Sie können eine Ausnahme auslösen, indem Sie den Ausnahmetyp erhöhen. Die ausgelöste Ausnahme wird auch von außer abgefangen. Wie unten gezeigt, Zeile 4

age = 500
try:
    if age < 0 or age > 200:
        raise ValueError("age范围0-200")
    print("age", age)
except ValueError as e:
    print("出现异常-->", e)
# 输出结果
出现异常--> age范围0-200
Nach dem Login kopieren

2) Eine benutzerdefinierte Ausnahme auslösen

抛出自定义异常首先得有个自定义的异常类,注:自定义的异常必须直接或间接的继承Exception基类

class MyException(Exception):  # 自定义异常类
    def __init__(self, msg):
        self.msg = msg


age = 500
try:
    if age < 0 or age > 200:
        raise MyException("age范围0-200")  # 抛出自定义异常
    print("age", age)
except MyException as e:
    print("出现异常-->", e)


# 输出结果
出现异常--> age范围0-200
Nach dem Login kopieren

当然自定义异常类也可以拥有许多的功能,就得看需求添加啦

6、在异常处理中抛出异常

有某需求:当捕获到异常时处理完后想继续抛出异常.....

在except中用raise可以抛出当前异常

try:
    i = 1 / 0  # 异常的语句
except Exception as e:
    print("出现异常-->", e)
    raise  # 处理完后继续抛出异常,raise表示抛出当前异常
print("-------------")


# 输出结果
出现异常--> division by zero
Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
    i = 1 / 0
ZeroDivisionError: division by zero
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWas sind die Ausnahmen in Python? Detaillierte Einführung in Ausnahmen in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage