OUJOOD.COM
Structure de base : try et except
Le bloc try contient le code susceptible de provoquer une erreur. Si une exception se produit, Python saute immédiatement au bloc except correspondant. Si aucune exception n'est levée, le bloc except est ignoré.
def diviser(x, y):
try:
resultat = x // y # division entière
print("Bien ! La réponse est :", resultat)
except ZeroDivisionError:
print("Désolé ! Vous divisez par zéro.")
# Pas d'exception : le bloc try s'exécute normalement
diviser(3, 2) # Bien ! La réponse est : 1
# Exception ZeroDivisionError : le bloc except prend le relais
diviser(3, 0) # Désolé ! Vous divisez par zéro.
Si l'exception levée ne correspond à aucun bloc except disponible, elle remonte au niveau supérieur. Si rien ne la capture, Python arrête l'exécution et affiche le message d'erreur.
Le bloc else
Le bloc else s'exécute uniquement si le bloc try s'est déroulé sans exception. Il se place après tous les blocs except. C'est l'endroit logique pour mettre le code qui ne doit tourner que quand tout s'est bien passé.
def AparB(a, b):
try:
c = (a + b) // (a - b)
except ZeroDivisionError:
print(f"{a}+{b}/{a}-{b} → division par zéro impossible")
else:
print("c =", c) # exécuté seulement si pas d'exception
AparB(5.0, 3.0) # c = 4.0
AparB(3.0, 3.0) # 3.0+3.0/3.0-3.0 → division par zéro impossible
Exceptions multiples
On peut enchaîner plusieurs blocs except pour traiter différents types d'erreurs séparément. Un bloc except sans type d'exception capture tout ce qui n'a pas été intercepté avant.
try:
print(x) # x n'est pas défini → NameError
except NameError:
print("La variable x n'est pas définie")
except (TypeError, ZeroDivisionError):
print("Erreur de type ou division par zéro")
except:
print("Un autre problème est survenu")
Le bloc finally
Le bloc finally s'exécute toujours, qu'une exception ait été levée ou non. Il sert typiquement à libérer des ressources : fermer un fichier, une connexion à une base de données, etc.
try:
k = 5 // 0 # ZeroDivisionError
print(k)
except ZeroDivisionError:
print("Impossible de diviser par zéro")
finally:
print("Ceci est toujours exécuté") # s'exécute dans tous les cas
Lever une exception avec raise
On peut déclencher une exception manuellement avec le mot-clé raise. C'est utile pour valider des données en entrée et signaler explicitement une situation incorrecte.
# Lever une exception générique si x est négatif
x = -1
if x < 0:
raise Exception("Pas de nombre inférieur à zéro")
# Lever une TypeError si x n'est pas un entier
x = "hello"
if not type(x) is int:
raise TypeError("Seuls les entiers sont autorisés")
On peut spécifier le type d'exception à lever et un message explicite. Ces messages apparaissent dans la traceback Python et aident à diagnostiquer le problème rapidement.
Par carabde | Mis à jour le 24 avril 2026