Le contenu de cet article porte sur quelles sont les exceptions en python ? L'introduction détaillée des exceptions en python a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer, j'espère qu'elle vous sera utile.
Il existe deux types d'exceptions en python, 1) les erreurs de syntaxe, le code ne peut pas être exécuté s'il ne passe pas la détection de syntaxe de l'interpréteur python 2) les exceptions, les erreurs détectées lors de l'exécution de le programme python est appelé une exception. Lorsqu'aucune gestion des exceptions n'est effectuée, le programme sera terminé et des informations d'exception seront demandées, telles que : ① exception de conversion de type lors de la conversion d'une chaîne en nombre, ② exception de fichier n'existe pas lors de la lecture du fichier, ③ exception d'hôte inaccessible pendant la liaison réseau. .. ·attendez. Lorsqu'une exception se produit dans un script Python, nous devons l'intercepter et la gérer, sinon le programme mettra fin à son exécution. Après tout, personne ne veut que le programme qu'il utilise plante soudainement
Erreur de syntaxe
Erreur de syntaxe Python. les erreurs sont un problème que de nombreux débutants rencontrent souvent. Ce type d'erreur est de niveau relativement faible. Vous pouvez réduire ces erreurs en tapant le code plusieurs fois
>>> if Trur File "<stdin>", line 1 if Trur ^ SyntaxError: invalid syntax >>> print("as")) File "<stdin>", line 1 print("as")) ^ SyntaxError: invalid syntax
.
Par exemple : une telle erreur est une erreur grammaticale. L'instruction if à la fin de la ligne 1 manque de ":", et la fin de la ligne 6 contient trop de ")"
2. Exceptions
1) Les erreurs détectées lors de l'exécution sont appelées exceptions. La détection de syntaxe de Python ne peut pas détecter de telles erreurs.
>>> int("aa") Traceback (most recent call last): File "<stdin>", line 1, in <module> ValueError: invalid literal for int() with base 10: 'aa' >>> f = open("aaa.txt","r") Traceback (most recent call last): File "<stdin>", line 1, in <module> FileNotFoundError: [Errno 2] No such file or directory: 'aaa.txt'
Les 1ère et 5ème lignes sont l'endroit où les exceptions se produisent, jetez un œil aux informations de sortie d'exception, comme indiqué ci-dessous
2) la classe d'exception standard de Python
BaseException est la classe de base de toutes les exceptions, et Exception est la classe de base des erreurs régulières
Les autres classes d'exceptions python ne seront pas décrites une par une. sur Baidu
3. Gestion des exceptions
Afin d'améliorer la robustesse du programme et d'éviter qu'il ne plante lorsqu'une exception se produit, dans La gestion des exceptions est requise si nécessaire
1) try-sauf : instruction
① L'instruction de gestion des exceptions la plus simple est la suivante. try Lorsqu'une exception se produit dans le bloc d'instructions, les instructions suivantes ne seront plus exécutées (ligne 3). L'exception est interceptée par except. Après avoir exécuté le bloc d'instructions dans except, le programme continue de s'exécuter vers le bas (comme la ligne 6). . Remarque : Except n'est pas suivi du type d'exception. Par défaut, toutes les exceptions sont capturées
try: int("aaa") print("---aaa---") except: print("出现异常-->英文字母不能转换为数字") print("----------") # 输出结果 出现异常-->英文字母不能转换为数字 ----------
② Lorsque nous devons détecter différentes exceptions, nous pouvons. utilisez plusieurs exceptions. Implémentation, si vous avez besoin d'obtenir des informations sur l'exception, vous pouvez obtenir l'objet d'exception via le nom de la variable as, tel que la ligne 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 ----------
<🎜. >③, lorsque nous devons combiner plusieurs exceptions, nous pouvons les gérer de la même manière sauf (ValueError, [ZeropisionError [, NameError]]) :
try: i = 1 / 0 nu = int("aa") except (ValueError, ZeroDivisionError) as e: print(e) except: pass print("----------") # 输出结果 division by zero ----------
2) essayez-sauf -else-finally
① Lorsqu'une instruction final apparaît dans try-sauf-else-finally, les instructions du bloc d'instructions final seront exécutées, qu'une exception se produise ou non, tandis que les instructions dans else ne seront exécutées que si aucune exception ne se produit. Lors de l'exécution de
lorsqu'une exception se produit, try-sauf-else-finally est le suivant <🎜. >
try: i = 1 / 0 print("没有出现异常i值", i) except Exception as e: print("出现异常-->", e) else: print("没有出现异常-->执行else") finally: print("不管是否出现异常,这里的语句一定会被执行") # 输出结果 出现异常--> division by zero 不管是否出现异常,这里的语句一定会被执行
try: i = 1 / 1 print("没有出现异常i值", i) except Exception as e: print("出现异常-->", e) else: print("没有出现异常-->执行else") finally: print("不管是否出现异常,这里的语句一定会被执行") # 输出结果 没有出现异常i值 1.0 没有出现异常-->执行else 不管是否出现异常,这里的语句一定会被执行
4. Livraison d'exception
S'il n'y a pas d'instruction pour gérer l'exception dans l'instruction où l'exception se produit, l'exception sera déclenchée. Passer à travers les couches jusqu'à ce qu'une instruction qui gère une exception soit rencontrée, ou que l'interpréteur python termine le programme
def test2(): int("aa") def test1(): test2() try: test1() except Exception as e: print(e) print("-----------") # 输出结果 invalid literal for int() with base 10: 'aa' -----------
5. Lancer une exception raise
1) Lancer une exception définie par python
Vous pouvez lancer une exception en augmentant le type d'exception, et l'exception levée sera également interceptée par except Arrive. Comme indiqué ci-dessous, ligne 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
抛出自定义异常首先得有个自定义的异常类,注:自定义的异常必须直接或间接的继承Exception基类 当然自定义异常类也可以拥有许多的功能,就得看需求添加啦 6、在异常处理中抛出异常 有某需求:当捕获到异常时处理完后想继续抛出异常..... 在except中用raise可以抛出当前异常 Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!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
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