Recherche de site Web

Gestion des exceptions Python


Introduction

Python vous informera lorsque vous vous trompez de syntaxe. Il échouera immédiatement et ne permettra pas à votre programme de s’exécuter.

Qu’en est-il lorsque votre code rencontre un autre type de problème ? C’est ce qu’on appelle des exceptions, et elles ont tendance à être plus difficiles à attraper. C’est à vous de reconnaître les situations où ils pourraient survenir et de les attraper pour éviter que votre programme ne se bloque complètement.

Imaginez un scénario où vous avez besoin d’une entrée utilisateur. Voulez-vous que votre programme se bloque chaque fois qu’un utilisateur tape mal quelque chose ou saisit quelque chose d’erroné ? C’est loin d’être idéal. Puisque vous savez qu’il pourrait y avoir un problème là-bas, vous pouvez dire à Python d’en rechercher un et de récupérer gracieusement.

Essayez et sauf

Lorsque vous savez qu’il y a une chance qu’une exception apparaisse, vous demandez à Python d’essayer le morceau de code et de rechercher une exception. Jetez-y un coup d’œil dans le contexte de l’exemple de nombre précédent.


try:
	number = int(input("Enter any number: "))
except:
	print("That didn't work…")

Maintenant, au lieu de planter, votre programme continuera, même si l’utilisateur entre dans la corbeille.

Vous pouvez également indiquer à Python le type d’exception à rechercher. Dans ce cas, il s’agit d’une ValueError.


try:
	number = int(input("Enter any number: "))
except ValueError:
	print("You didn't enter a number!")

Si Python sait quel type d’exception il recherche, vous pouvez lui dire comment répondre en conséquence.

Faites le vôtre

Vous pouvez créer vos propres exceptions en les écrivant en tant que classes qui héritent de la classe de base Exception ou de l’une des autres classes d’exception.


class NewException(Exception):
	pass

Vous devez intégrer dans votre programme la manière d’utiliser vos exceptions personnalisées.

Lever des exceptions

Il est possible de lever manuellement les exceptions avec relance.


try:
	raise NewException
except NewException:
	print("It failed as planned!")

Exceptions multiples

Si vous vous attendez à ce qu’il y ait plus d’une exception, vous pouvez en intégrer plusieurs avec try. Commencez par faire quelques exceptions personnalisées.


class ExceptionA(Exception):
	pass

class ExceptionB(Exception):
	pass

Maintenant, utilisez-les avec try.


try:
	raise ExceptionB
except (ExceptionA, ExceptionB):
	print("It was either A or B")

Bien sûr, ce n’est pas le meilleur car, dans un scénario réel, vous ne sauriez pas quelle exception s’est réellement produite.

Essayez plutôt d’utiliser des clauses except séparées.


try:
	raise ExceptionB
except ExceptionA:
	print("ExceptionA Occurred")
except ExceptionB:
	print("ExceptionB Occurred")
except:
	print("Something else happened…")

Le troisième sauf agit pour attraper toute autre exception. Il s’agit du comportement par défaut lorsqu’aucune exception spécifique n’est donnée.

Sinon et enfin

Il existe deux clauses supplémentaires pour gérer ce qui se passe après la gestion des exceptions. Ils aident votre code à répondre aux exceptions.

La clause else vous permet d’exécuter du code uniquement si aucune exception n’a été levée.


try:
	number = int(input("Enter any number: "))
except ValueError:
	print("You didn't enter a number!")
else:
	print(number ** 2)

Vous ne voulez essayer d’effectuer une opération sur le numéro que si vous en entrez un.

La cause finale s’exécutera indépendamment de toute exception. Il s’exécutera toujours à la fin du bloc d’essai.


try:
	number = int(input("Enter any number: "))
except ValueError:
	print("You didn't enter a number!")
else:
	print(number ** 2)
finally:
	print("This will always run.")

Réflexions finales

Il est important de comprendre ce qui peut mal tourner avec vos programmes. Il est tout aussi important de savoir que la chose va mal tourner. En tenant compte des exceptions, vous pouvez rendre votre code aussi stable que possible et ne pas frustrer vos utilisateurs.

Exercices

  1. Créez du code qui lève une exception non gérée.
  2. Utilisez un bloc try pour gérer cette exception.
  3. Créer une classe d’exception personnalisée
  4. Levez cette exception personnalisée dans un bloc try.
  5. Créez un bloc try avec un morceau de code qui ne s’exécute que si aucune exception n’est levée.

Articles connexes: