Gérer des exceptions sous Python consiste à éviter l’arrêt brutal d’un script dû à une erreur.
Par exemple, si l’on fait fonctionner le script ci-dessous...
nombre = float(input("Veuillez saisir un nombre"))
inverse = 1/nombre
print("L'inverse de votre ",nombre, "est ",inverse)
...et que l’utilisateur saisit la valeur 0 pour la variable nombre, alors le script va s’arrêter brutalement.
Pour gérer ce type de comportement du programme, il existe une solution : les mots-clé try et except
.
Ainsi, le script ci-dessus qui calcule l’inverse d’un nombre non nul deviendra :
L'instruction placée sous le mot-clé except n’est exécutée que si le bloc d’instruction placé sous le mot-clé try
abouti à une erreur.
Il est également possible de différencier les exceptions selon le type d’erreur effectuée. Cela peut être pratique pour adapter le message à
l’utilisateur.
Voyons un exemple sur notre script qui calcule l’inverse d’un nombre non nul :
Si l'on exécute ce scrupt, on constate que selon le type d’erreur effectué, le message affiché est différent.
Cette gestion des exception nécessite d’anticiper sur le type d’erreur que l’utilisateur est susceptible de faire. Il s’agit là de l’étape de
debuggage qui vient souvent en toute fin de programmation d’un projet.
Notons qu'il est nécessaire d'indiquer rigoureusement la catégorie d'erreur anticipée pour que l'instruction placée sous le mot-clé except
associé s'excécute. Pour connaître ces catégories d'erreur, le plus pratique consiste en les commettre et lire la réponse donnée par Python.
Le mot-clé else va permettre d’exécuter une instruction si aucune erreur ne survient dans le bloc :
En fait cela revient au même que de placer l’instruction print() dans le bloc try. Mais cette structure permet de
distinguer clairement les instructions qui s’exécutent dans le bloc try de celles, qui sont en principe des instructions de sortie qui
doivent s’exécuter ensuite.
Le mot-clé finally permet d’exécuter du code après un bloc try quel que soit le résultat de l’exécution
dudit bloc :