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

ExempleRedemander 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 »