Maison développement back-end Tutoriel Python Quelles sont les exceptions en python ? Introduction détaillée aux exceptions en python

Quelles sont les exceptions en python ? Introduction détaillée aux exceptions en python

Sep 26, 2018 pm 03:54 PM

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
Copier après la connexion

.

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: &#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;
Copier après la connexion

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("----------")
# 输出结果
出现异常-->英文字母不能转换为数字
----------
Copier après la connexion

② 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
----------
Copier après la connexion

<🎜. >③, 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
----------
Copier après la connexion

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
不管是否出现异常,这里的语句一定会被执行
Copier après la connexion
lorsqu'aucune exception ne se produit, try-sauf-else-finally Comme suit

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


# 输出结果
没有出现异常i值 1.0
没有出现异常-->执行else
不管是否出现异常,这里的语句一定会被执行
Copier après la connexion
②, try-sauf-else-finally peut également être utilisé séparément, il existe trois formes 1) essayer-sauf-finalement 2) essayer-sauf-autre 3) essayer-finalement. Le code ne sera pas affiché ici

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: &#39;aa&#39;
-----------
Copier après la connexion

Comme ci-dessus , si une exception se produit dans la ligne 2 de test2, une exception sera envoyée à la ligne 2 de test2 ci-dessus. Elle est transmise à l'instruction appelant test2 à la ligne 5. Il n'y a toujours pas d'instruction de gestion des exceptions ici. Elle continuera à être transmise. à la couche supérieure et est capturé par except à la ligne 8

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
Copier après la connexion
2) Lancez une exception personnalisée

抛出自定义异常首先得有个自定义的异常类,注:自定义的异常必须直接或间接的继承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
Copier après la connexion

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

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
Copier après la connexion

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!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

Video Face Swap

Video Face Swap

Échangez les visages dans n'importe quelle vidéo sans effort grâce à notre outil d'échange de visage AI entièrement gratuit !

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Comment résoudre le problème des autorisations rencontré lors de la visualisation de la version Python dans le terminal Linux? Apr 01, 2025 pm 05:09 PM

Solution aux problèmes d'autorisation Lors de la visualisation de la version Python dans Linux Terminal Lorsque vous essayez d'afficher la version Python dans Linux Terminal, entrez Python ...

Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Comment enseigner les bases de la programmation novice en informatique dans le projet et les méthodes axées sur les problèmes dans les 10 heures? Apr 02, 2025 am 07:18 AM

Comment enseigner les bases de la programmation novice en informatique dans les 10 heures? Si vous n'avez que 10 heures pour enseigner à l'informatique novice des connaissances en programmation, que choisissez-vous d'enseigner ...

Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Comment copier efficacement la colonne entière d'une dataframe dans une autre dataframe avec différentes structures dans Python? Apr 01, 2025 pm 11:15 PM

Lorsque vous utilisez la bibliothèque Pandas de Python, comment copier des colonnes entières entre deux frames de données avec différentes structures est un problème courant. Supposons que nous ayons deux dats ...

Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Comment éviter d'être détecté par le navigateur lors de l'utilisation de Fiddler partout pour la lecture de l'homme au milieu? Apr 02, 2025 am 07:15 AM

Comment éviter d'être détecté lors de l'utilisation de FiddlereVerywhere pour les lectures d'homme dans le milieu lorsque vous utilisez FiddlereVerywhere ...

Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Comment Uvicorn écoute-t-il en permanence les demandes HTTP sans servir_forever ()? Apr 01, 2025 pm 10:51 PM

Comment Uvicorn écoute-t-il en permanence les demandes HTTP? Uvicorn est un serveur Web léger basé sur ASGI. L'une de ses fonctions principales est d'écouter les demandes HTTP et de procéder ...

Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Comment créer dynamiquement un objet via une chaîne et appeler ses méthodes dans Python? Apr 01, 2025 pm 11:18 PM

Dans Python, comment créer dynamiquement un objet via une chaîne et appeler ses méthodes? Il s'agit d'une exigence de programmation courante, surtout si elle doit être configurée ou exécutée ...

See all articles