Gestion des exceptions
Imaginons que le programme nécessite d'utiliser une variable de type nombre et que l'utilisateur (ou un autre programme communiquant avec le votre) fournisse un texte : le programme se bloque ou ne fonctionne pas comme attendu. Il faut donc être capable de gérer les exceptions.
Les erreurs qui nécessitent des exceptions sont diverses, en voici quelques-unes :
Erreur de transtypage :
1
float("Voici une phrase")
2
3
ValueError: could not convert string to float: 'Voici une phrase'
Division par zéro :
1
inverse = 1.0/0
2
3
ZeroDivisionError: float division by zero
Exemple : Redemander une valeur incorrecte.
Écrire un script qui lit la valeur d'un dé à 6 faces entrée par l'utilisateur. Le programme vérifie que celle-ci est comprise entre 1 et 6, sinon il redemande.
Première version sans exception :
1
n = int(input('Valeur du dé : '))
2
while (n < 1) or (n > 6) :
3
n = int(input('Entre 1 et 6, merci : '))
4
print('La valeur entrée est :', n)
Seconde version, qui évite les erreurs lorsque l'utilisateur entre un texte :
1
while True: # Attention, boucle infinie !
2
try: # On essaie
3
n = int(input('Valeur du dé : '))
4
if 1 <= n <= 6 : # Test de la valeur entière
5
break # On sort s'il n'y a pas d'exception
6
else:
7
print('Entre 1 et 6, merci : ')
8
except: # Il y a une erreur
9
print('Erreur quelque part, entre 1 et 6, merci : ') # Message « d'erreur »