Implémenter un bloc try-except
Dans l'étape précédente, vous avez vu comment les exceptions peuvent faire terminer brutalement un programme. Pour gérer les exceptions de manière élégante et éviter les plantages du programme, vous pouvez utiliser des blocs try
et except
.
Un bloc try
vous permet d'enfermer une section de code qui peut lever une exception. Si une exception se produit dans le bloc try
, le programme saute au bloc except
correspondant, où vous pouvez gérer l'exception.
Modifions le fichier exceptions_example.py
pour inclure un bloc try-except
afin de gérer la ZeroDivisionError
. Ouvrez le fichier exceptions_example.py
dans l'éditeur VS Code et modifiez-le comme suit :
## ~/project/exceptions_example.py
def divide(x, y):
try:
result = x / y
return result
except ZeroDivisionError:
return "Cannot divide by zero!"
print(divide(10, 2))
print(divide(5, 0))
print(divide(8, 4))
Dans ce code modifié :
- Nous avons ajouté un bloc
try
autour de l'opération x / y
. Cela signifie que si une ZeroDivisionError
se produit lors de la division, le programme saute au bloc except
.
- La ligne
except ZeroDivisionError:
précise que nous voulons gérer les exceptions de type ZeroDivisionError
.
- À l'intérieur du bloc
except
, nous renvoyons la chaîne de caractères "Cannot divide by zero!"
. Cette chaîne sera affichée dans la console au lieu de faire planter le programme.
Maintenant, exécutons le script modifié. Ouvrez le terminal dans VS Code et exécutez la commande suivante :
python ~/project/exceptions_example.py
Vous verrez une sortie similaire à celle-ci :
5.0
Cannot divide by zero!
2.0
Comme vous pouvez le voir, le programme ne plante plus lorsqu'il effectue une division par zéro. Au lieu de cela, le bloc except
intercepte la ZeroDivisionError
, et le message "Cannot divide by zero!"
est affiché. Le programme continue ensuite son exécution, et la dernière instruction print
est également exécutée avec succès.
Les blocs try-except
peuvent également être utilisés pour gérer d'autres types d'exceptions. Par exemple, vous pouvez utiliser un bloc try-except
pour gérer les exceptions TypeError
qui peuvent se produire si vous essayez d'effectuer une opération sur des types de données incompatibles. Vous pouvez également avoir plusieurs blocs except
pour gérer différents types d'exceptions.
Dans l'étape suivante, vous apprendrez à utiliser pytest
pour tester les exceptions.