oujood.com

Gestion des exceptions: Utilisation des instructions try, except et finally

Dans ce tutoriel, vous apprendrez à gérer les exceptions dans votre programme Python en utilisant les instructions try, except et finally.
Les erreurs en Python peuvent être de deux types : les erreurs de syntaxe et les exceptions. Les erreurs sont des problèmes dans un programme à cause desquels le programme arrête l'exécution. D'autre part, les exceptions sont soulevées lorsque certains événements internes se produisent et modifient le déroulement normal du programme.

chercher |

Python Try Except

Le bloc try vous permet de tester un bloc de code pour détecter les erreurs.
Le bloc except vous permet de traiter l'erreur.
Le bloc else vous permet d'exécuter du code s'il n'y a pas d'erreur.
Le bloc finally permet d'exécuter du code, quel que soit le résultat des blocs try et except.

Traitement des exceptions

Lorsqu'une erreur se produit, ou une exception comme nous l'appelons, Python s'arrête normalement et génère un message d'erreur.
Ces exceptions peuvent être gérées à l'aide de l'instruction try :

Les instructions Try et Except sont utilisées pour gérer ces erreurs dans notre code en Python. Le bloc try est utilisé pour vérifier l'absence d'erreurs dans le code, c'est-à-dire que le code à l'intérieur du bloc try sera exécuté s'il n'y a pas d'erreur dans le programme. Tandis que si le programme rencontre une erreur dans le bloc try précédent, le code à l'intérieur du bloc except s'exécutera.
Syntaxe de try...except:

try :
# Le code à exécuter
except :
# Exécuté en cas d'erreur dans le bloc
# bloc try

Comment fonctionne try() ?

D'abord, la clause try est exécutée, c'est-à-dire le code placé dans le bloc entre la clause try et la clause except. S'il n'y a pas d'exception, alors seule la clause try sera exécutée, la clause except est ignorée.
Si une exception se produit, la clause try est ignorée et la clause except est exécutée.
Si une exception se produit, mais que la clause except du code ne la gère pas, elle est transmise aux instructions try externes. Si l'exception n'est pas gérée, l'exécution s'arrête.
Une instruction try peut avoir plus d'une clause except.
Exemple 1 : Pas d'exception, donc la clause try est exécutée.

  Copier le code

# Code Python pour illustrer
# le fonctionnement de try()
def diviser(x, y) :
    try :
# Division par palier : ne donne que la partie entiére comme résultat
        resultat = x // y
        print("Bien ! La réponse est :", resultat)
    except ZeroDivisionError :
        print(" Désolé ! Vous divisez par zéro ")

# Regardez les paramètres et notez le fonctionnement du programme
diviser(3, 2)
La sortie sea :
Bien ! La réponse est : 1
Exemple 2 : Comme il y a une exception, seule la clause except sera exécutée.
Reprenez le même exemple ci-haut en chageant la derniére ligne par :
diviser(3,0)
La sortie sera:
Désolé ! Vous divisez par zéro

La condition Else

En python, vous pouvez également utiliser la condition else sur le bloc try-except qui doit être présent après toutes les conditions except. Le code entre dans le bloc else est exécuté uniquement si la clause try ne lève pas d'exception.

Vous pouvez utiliser le mot-clé else pour définir un bloc de code à exécuter si aucune erreur n'a été levée :
La Syntaxe est:

try :
# Du code
except :
# Exécuté en cas d'erreur dans le
# bloc try
else :
# exécuté si pas d'exception

Exemple : Dans cet exemple, le bloc try ne génère pas d'erreur :

  Copier le code

# Code servant à décrire la clause else avec try-except

# Fonction qui renvoie a/b
def AparB(a , b) :
	try :
		c = ((a+b) // (a-b))
	except ZeroDivisionError :
		print (f"{a}+{b}/{a}-{b} Désolé ! Vous divisez par zéro ")
	else :
		print ("c =",c)

# Tester la fonction ci-dessus
AparB(5.0, 3.0)
AparB(3.0, 3.0)

Des exceptions multiples

Vous pouvez définir autant de blocs d'exception que vous le souhaitez, par exemple si vous voulez exécuter un bloc de code spécial pour un type d'erreur particulier :

La syntaxe est :
try:
   # faire quelque chose

except ValueError :
   # gère l'exception ValueError

except (TypeError, ZeroDivisionError) :
   # traite les exceptions multiples
   # TypeError et ZeroDivisionError

except :
   # gère toutes les autres exceptions
Exemple : Afficher un message si le bloc try rencontre une NameError et un autre pour les autres erreurs :

  Copier le code

#Le bloc try va générer l'erreur NameError, car x n'est pas défini :

try :
  print(x)
except NameError :
  print("La variable x n'est pas définie")
except :
  print("Un autre problème est survenu")

Mot-clé finally en Python

Python fournit un mot-clé finally, qui est toujours exécuté après les blocs try et except. Le bloc finally s'exécute toujours après la fin normale du bloc try ou après que le bloc try se termine à cause de certaines exceptions.
La syntaxe :
try :
    # Du code
except :
    # Exécuté en cas d'erreur dans le
    # bloc try
else :
    # exécuté si pas d'exception
finally :
    # Un peu de code .....(toujours exécuté)
Exemple : Programme Python pour démontrer finally

  Copier le code

try :
    k = 5//0 # génère une exception de division par zéro.
    print(k)
    
# traite l'exception de division par zéro    
except ZeroDivisionError :   
    print("Impossible de diviser par zéro")
        
finally :
    # ce bloc est toujours exécuté 
    # indépendamment de la génération de l'exception.
    print('Ceci est toujours exécuté')

Lancer une exception

En tant que développeur Python, vous pouvez souhaiter lancer une exception si une condition se produit.

Pour lancer (ou lever) une exception, utilisez le mot-clé raise.
Exemple Lever une erreur et arrêter le programme si x est inférieur à 0 :

  Copier le code

x = -1

if x < 0 :
  raise Exception("Désolé, pas de nombre inférieur à zéro")
Le mot-clé raise est utilisé pour lever une exception.

Vous pouvez définir le type d'erreur à générer et le texte à afficher à l'utilisateur.
Exemple Lance une TypeError si x n'est pas un nombre entier :

  Copier le code

x = "hello"

if not type(x) is int :
raise TypeError("Seuls les nombres entiers sont autorisés")


Voir aussi nos tutoriel :

Balise input

Définit un contrôle d'entrée

code de js

Le code de js : Découvrez comment utiliser et tirer le meilleur parti du langage JavScript et où mettre le code javascript dans une page web

outline-color

Définit la couleur d'une esquisse