1 Étude d’un exemple
Considérons le code suivant qui permet de calculer le quotient de deux nombres a et b:
a = int(input("Tapez la valeur de a : "))
b = int(input("Tapez la valeur de b : "))
print("Le quotient de a par b est : a/b = " , a/b)
Si vous exécutez le code ci-dessus en donnant a = 6 et b = 3, le programme renvoie :
Le quotient de a par b est : a/b = 2.0
L’exécution ne rencontre aucun problème! Mais si l’utilisateur donne a = 6 et b = 0 le programme renvoie le message d’erreur :
builtins.ZeroDivisionError: division by zero.
En plus l’interpréteur python arrête l’exécution du code !
Afin d’éviter ce message d’erreur, et continuez à exécuter la suite du code, on utilise la structure Try … except
- Le bloc try permet de tester un bloc de code s’il contient des erreurs ou non et ne l’exécute que s’il ne contient aucune erreur! Dans le cas contraire le programme ignore la totalité du code dans ce bloc et passe au bloc suivant except.
- Le bloc except, vous permet de gérer l’erreur.
- Le bloc finally, vous permet d’exécuter du code, quel que soit le résultat des blocs try et except.
2 – Gestion des exceptions
Lorsqu’une erreur se produit, ou exception comme nous l’appelons, Python s’arrête normalement et génère un message d’erreur.
Ces exceptions peuvent être gérées à l’aide de l’instruction try:
a = int(input("Tapez la valeur de a : "))
b = int(input("Tapez la valeur de b : "))
try:
print("Le quotient de a par b est : a/b = " , a/b)
except:
print("Veuillez choisir une valeur b non nulle !")
Dans ce cas si vous donnez a = 6 et b = 0, le programme ignore le code du bloc try après avoir détecté une erreur et passe automatiquement au code du bloc except et renvoie donc:
Veuillez choisir une valeur b non nulle !
3 – Exception utilisant l’instruction raise
try:
age = int(input("Veuille saisir votre age"))
if age < 18:
raise ValueError
else:
print("age valide")
except :
print("age non valide !")
4 – L’instruction finally
L’instruction finally est utilisée pour exécuter des instructions quelque soit les erreurs générées ou non. Dans tous les cas (présence d’erreurs ou non ! ) l’instruction déclarée dans le block finally sera executée.
Syntaxe:
try:
# bloc de code pouvant probablement lever une exeption
finally:
# bloc de code qui sera toujours exécuté