Exceptions multiples en Python
- Utilisation de virgules et de parenthèses pour intercepter plusieurs exceptions
-
Utilisez la fonction
suppress()
pour intercepter plusieurs exceptions
En programmation, une exception est une occurrence qui perturbe le déroulement normal du programme. En Python, il est représenté comme une erreur. Une exception peut être de différents types en fonction de sa cause, comme IndexError, KeyError, etc.
Nous pouvons utiliser les blocs try
et except
pour traiter les exceptions. Le bloc try
contient du code qui peut déclencher une exception, et si une exception est levée, nous pouvons spécifier le code alternatif dans le bloc except
.
Par example,
try:
print(5 / 0)
except:
print(5 / 1)
Production:
5
Le 5/0
lève une exception donc il exécute le code dans le bloc except
.
Notez qu’il est possible de lever des exceptions manuellement également en utilisant le mot-clé raise
.
Nous pouvons également traiter plusieurs exceptions en Python. Nous savons que nous avons différents types d’exceptions en Python, nous pouvons donc avoir plusieurs instructions except
pour différentes exceptions.
Par example,
try:
raise ValueError()
except ValueError:
print("Value Error")
except KeyError:
print("Key Error")
Production:
Value Error
Il est également possible d’attraper plusieurs exceptions avec une seule instruction except
. Ces méthodes sont décrites ci-dessous.
Utilisation de virgules et de parenthèses pour intercepter plusieurs exceptions
La première façon d’y parvenir est de séparer les exceptions par une virgule et de les mettre entre parenthèses. Le code suivant montre comment.
try:
raise ValueError()
except (ValueError, KeyError):
print("Error")
Production:
Error
Si une exception à celle mentionnée entre parenthèses est rencontrée, le code de ce bloc est exécuté. Nous pouvons également attribuer un nom à l’objet d’exception (également appelé objet d’erreur). e
est le nom le plus couramment utilisé pour l’objet d’erreur. Par example,
try:
raise ValueError()
except (ValueError, KeyError) as e:
print("Error")
Production:
Error
Le mot-clé as
crée l’alias du nom de l’objet. Sous Python 2.5, il était possible d’éliminer l’utilisation du mot-clé as
en séparant simplement le nom de l’objet d’erreur à l’aide d’une virgule comme indiqué ci-dessous.
try:
raise ValueError()
except (ValueError, KeyError), e:
print("Error")
Production:
Error
Utilisez la fonction suppress()
pour intercepter plusieurs exceptions
La bibliothèque contextlib
fournit une fonction très utile appelée suppress()
qui peut également être utilisée pour gérer plusieurs exceptions.
Cette fonction combine l’instruction try
, except
et pass
sur une ligne de code. Il est utilisé avec l’instruction with
qui est également utilisée dans la gestion des exceptions et rend le code plus propre et lisible.
Le code suivant montre comment utiliser cette fonction.
from contextlib import suppress
with suppress(FileNotFoundError):
os.remove("somefile.tmp")
Le code ci-dessus est équivalent au programme suivant avec les instructions try
, except
et pass
.
try:
os.remove("somefile.tmp")
except FileNotFoundError:
pass
L’instruction pass
est utilisée quand on ne veut rien exécuter mais éviter toute erreur pour du code vide.
Nous pouvons utiliser la fonction suppress
pour plusieurs exceptions comme indiqué ci-dessous.
from contextlib import suppress
with suppress(FileNotFoundError, KeyError):
os.remove("somefile.tmp")
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn