Formation I.S.N.

Gestion des exceptions

Dans sa forme minimale

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.

Dans sa forme complète

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.

Les mots-clé else et finally

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 :