Exceptions multiples en Python

Manav Narula 30 janvier 2023
  1. Utilisation de virgules et de parenthèses pour intercepter plusieurs exceptions
  2. Utilisez la fonction suppress() pour intercepter plusieurs exceptions
Exceptions multiples en Python

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")
Auteur: Manav Narula
Manav Narula avatar Manav Narula avatar

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

Article connexe - Python Exception