Gestion des exceptions – Les mots clés try/except/else en Python

Dans ce tutoriel, vous allez apprendre à gérer les exceptions dans votre programme Python à l’aide des instructions try, except et else. Cela vous aidera à écrire du code propre, lisible et efficace.
 
 


 

Quelles sont les exceptions en Python?

Une exception est un événement qui se produit pendant l’exécution d’un programme et qui perturbe le flux normal des instructions du programme. En général, lorsqu’un script Python rencontre une situation qu’il ne peut pas gérer, il déclenche une exception. Une exception est un objet Python qui représente une erreur.
 

Gérer les exceptions en python

En Python, les exceptions peuvent être gérées à l’aide de l’instruction « try ».

Une opération critique pouvant générer une exception est placée dans le bloc « try » et le code qui gère cette exception est écrit dans le bloc « except ».

Exemple 1:
Cet exemple ouvre et écrit son contenu dans un fichier, et quitte car il n’y a aucun problème.

try:
   file = open("file.txt", "w")
   file.write("Hello World!")
except IOError:
   print "Erreur: impossible de trouver le fichier"
else:
   print "Contenu écrit dans le fichier avec succès"
   file.close()

Cela produit le résultat suivant

Contenu écrit dans le fichier avec succès

 
Exemple 2:
Dans cet exemple on va essayer d’ouvrir un fichier sur lequel on n’a pas l’autorisation d’écrire, donc il déclenche une exception.

try:
   file = open("file.txt", "r")
   file.write("Hello World!")
except IOError:
   print "Erreur: impossible d’ouvrir le fichier"
else:
   print "Contenu écrit dans le fichier avec succès"
   file.close()

Cela produit le résultat suivant

Erreur: impossible d’ouvrir le fichier

 
 

La clause try/finally

Vous pouvez ajouter le bloc finally: avec le bloc try:. Le bloc finally est un endroit où placer le code qui doit être exécuté, que ce soit le bloc try crée une exception ou non. En revanche, vous ne pouvez pas utiliser la clause else avec la clause finale.
 
Exemple 3:

try:
   file = open("file.txt", "w")
   file.write("Hello World!")
finally:
   print "Erreur: impossible de trouver le fichier"

Si vous n’êtes pas autorisé à ouvrir le fichier en mode écriture, cela produira le résultat suivant

Erreur: impossible de trouver le fichier

 

Lever une exception

Vous pouvez générer des exceptions de plusieurs manières à l’aide de l’instruction raise.
 
Exemple 4:

if age > 0:
    #Faire quelque chose.
else:
    raise AssertionError("Valeur inattendue!", age)

 

Exceptions définies par l’utilisateur

Les programmeurs peuvent définir leurs propres exceptions en créant une nouvelle classe. Les exceptions doivent être héritées de la classe Exception, directement ou indirectement. Bien que cela ne soit pas obligatoire, la plupart des exceptions se terminent par «Error», ce qui revient à nommer les exceptions standard en python. Par exemple:

class MultiplicationError(Exception): 
  
    # Constructeur
    def __init__(self, val): 
        self.val = val 
  
    # __str__ pour afficher la valeur
    def __str__(self): 
        return(repr(self.val)) 
  
try: 
    raise(MultiplicationError(1*0)) 
  
# La valeur de l'exception est enregistrée dans error
except MultiplicationError as error: 
    print('Une nouvelle exception s\'est produite: ',error.val)

Cela produit le résultat suivant

Une nouvelle exception s'est produite:  0

 
Exercice Python Corrigé