Gestion des erreurs en Python
Dans cet article, nous expliquerons la gestion des erreurs en Python.
YouTube Video
Gestion des erreurs en Python
La gestion des erreurs en Python se fait principalement à l'aide des mots-clés try
, except
, else
et finally
. L'utilisation de ces structures vous permet de réagir de manière appropriée lorsqu'une erreur se produit dans votre programme. Ci-dessous, nous allons expliquer comment utiliser chacun d'entre eux.
Bloc try
Dans le bloc try
, vous écrivez le code que vous souhaitez exécuter. Si une erreur se produit dans ce bloc, l'exécution du programme passe immédiatement au bloc except
.
1try:
2 # Code that may raise an error (division by zero, for example)
3 #number = int(input("Enter a number: "))
4 number = int("abc")
5 result = 10 / number
6 print("Result:", result)
7except ValueError as e:
8 # Handle invalid input (e.g. non-numeric input)
9 print("Invalid input. Please enter a whole number.")
10 print(f"Value error: {e}")
11except ZeroDivisionError as e:
12 # Handle division by zero error
13 print("Cannot divide by zero!")
14 print(f"Zero division error: {e}")
- Ce code est un exemple de détection des erreurs dans un bloc
try
et de leur gestion appropriée en attrapant soit uneValueError
soit uneZeroDivisionError
.
Bloc except
Dans le bloc except
, vous écrivez le code qui sera exécuté lorsqu'une exception spécifique (erreur) se produit. Vous pouvez également intercepter des exceptions spécifiques en fonction du type d'exception qui se produit.
1try:
2 #number = int(input("Enter a number: "))
3 number = 0
4 result = 10 / number
5 print("Result:", result)
6except ZeroDivisionError as e:
7 print("Cannot divide by zero!")
8 print(f"Zero division error: {e}")
9except ValueError as e:
10 print("Input was not a valid integer.")
11 print(f"Value error: {e}")
- Ce code montre comment exécuter un traitement différent pour chaque type d’exception dans le bloc
except
lorsqu’une erreur se produit dans le bloctry
.
Gérer plusieurs exceptions ensemble
Spécifiez un tuple lorsque plusieurs classes d'exception peuvent partager la même logique de gestion.
1try:
2 my_list = [1, 2]
3 result = my_list[3] + 10 / 0
4except (IndexError, ZeroDivisionError) as e:
5 print(f"Exception occurred: {e}")
- Ce code est un exemple où l’on intercepte à la fois les exceptions
IndexError
etZeroDivisionError
et on les traite de la même manière.
Intercepter les exceptions sans condition
Omettez l'argument pour except
si vous souhaitez gérer tous les types d'exceptions dans un seul bloc.
1try:
2 # This code might cause some exception
3 result = "10" + 5 # TypeError
4except Exception as e:
5 print("Unexpected error")
- Cependant, gérer des exceptions spécifiques plutôt que d’attraper inconditionnellement toutes les exceptions est plus utile pour trouver des bugs et pour le débogage. Dans la mesure du possible, gérer explicitement uniquement les exceptions prévues comme
ValueError
ouTypeError
augmentera la robustesse de votre code.
Bloc else
Le bloc else
est exécuté uniquement si aucune erreur ne se produit dans le bloc try
.
1try:
2 #number = int(input("Enter a number: "))
3 number = 5
4 result = 10 / number
5except ZeroDivisionError as e:
6 print("Cannot divide by zero!")
7 print(f"Zero division error: {e}")
8except ValueError as e:
9 print("Input was not a valid integer.")
10 print(f"Value error: {e}")
11else:
12 # This block will execute only if no exceptions were raised
13 print("Result:", result)
- Ce code est un exemple où le bloc
else
est exécuté seulement si aucune erreur ne se produit dans le bloctry
.
Bloc finally
Le bloc finally
est utilisé pour écrire du code qui s'exécutera toujours à la fin, qu'une erreur se soit produite ou non dans le bloc try
. Il est utile pour libérer des ressources ou effectuer des tâches de nettoyage.
1try:
2 #number = int(input("Enter a number: "))
3 number = int("abc")
4 result = 10 / number
5except ZeroDivisionError as e:
6 print("Cannot divide by zero!")
7 print(f"Zero division error: {e}")
8except ValueError as e:
9 print("Input was not a valid integer.")
10 print(f"Value error: {e}")
11else:
12 # This block will execute only if no exceptions were raised
13 print("Result:", result)
14finally:
15 # This block will always execute, regardless of whether an exception was raised
16 print("Execution completed.")
- Ce code démontre que le bloc
finally
est exécuté qu’une exception se produise ou non.
Le mot-clé raise
Il est également possible de lever une exception à l'aide du mot-clé raise
lorsque certaines conditions dans le code existant ne sont pas remplies.
1def divide(a, b):
2 if b == 0:
3 raise ValueError("Cannot divide by zero.")
4 return a / b
5
6try:
7 result = divide(10, 0)
8except ValueError as e:
9 print(f"Error: {e}")
- Ce code montre comment lever explicitement une exception avec le mot-clé
raise
lorsque qu’une condition n’est pas respectée.
Conclusion
En gérant les erreurs de cette manière, vous pouvez éviter les plantages du programme, afficher des messages appropriés à l'utilisateur et poursuivre le traitement ultérieur du programme.
Vous pouvez suivre l'article ci-dessus avec Visual Studio Code sur notre chaîne YouTube. Veuillez également consulter la chaîne YouTube.