4. Le mécanisme d'exceptions
Le mécanisme d'exception permet de gérer des exécutions exceptionnelles qui ne se produisent qu'en cas d'erreur.
Il permet au programme de « rattraper » les erreurs, de détecter qu'une erreur s'est produite et d'agir en conséquence afin que le programme ne s'arrête pas.
Exemple :
Si l'on souhaite exécuter le programme suivant :
for i in range(-10,11):
1./i
print("%.3f " %(1./i))
Le programme s'exécute jusqu'à i=0 puis le message d'erreur suivant s'affiche et l'exécution s'interrompt :
Traceback (most recent call last):
File "<string>", line 250, in run_nodebug
File "D:\Boulot\CoursPython\TP_NSI\assert3.py", line 4,
in <module>
1./i
ZeroDivisionError: float division by zero
Une des solutions pour poursuivre l'exécution du programme jusqu'à la fin est d'utiliser l'instruction try-except
Fondamental : L'instruction try - except
Avec l'instruction try-except
, le programme s'exécute normalement lorsqu'il n'y a pas d'exception et informe l'utilisateur de l'erreur par un message approprié écrit par le programmeur prévoyant que vous êtes.
Exemple :
Le programme de l'exemple précédent doit être réécrit comme suit :
for i in range(-10,11):
try:
1./i
except ZeroDivisionError:
print(" c'est une division par zéro ")
else:
print("%.3f " %(1./i))
Ici, le programme s'exécute normalement lorsqu'il n'y a pas d'exception et informe l'utilisateur de l'erreur par le message « c'est une division par zéro » lorsqu'il y a une exception de type « ZeroDivisionError » (division par zéro).
Méthode : Exercice : anticipation des erreurs avec try :... except ...
Ecrire une fonction lireEntier(), intégrant l'instruction try-except,
qui permet de saisir et d'afficher un nombre entier,
mais qui lors de toutes autres saisies (flottant, caractère, symbole, chaîne de caractères, ...)
affiche la saisie
puis invite l'utilisateur à en faire une nouvelle.
Saisir et tester le programme dans votre environnement de développement python.
def lireEntier():
while True: #
lireEntier()