🐍 PyTutos

Gérer les erreurs avec try / except

Empêche ton programme de planter en attrapant les erreurs.

⏱ 10 minutes 📂 intermediaire #intermediaire #erreurs #exceptions

try / except : gérer les erreurs proprement

Au lieu que ton programme plante, tu peux attraper les erreurs et décider quoi faire.

La structure de base

try:
    age = int(input("Ton âge ? "))
    print(f"Tu as {age} ans")
except ValueError:
    print("Ce n'est pas un nombre !")

Si l'utilisateur tape "chien", on ne plante pas — on affiche un message.

Attraper plusieurs erreurs

try:
    x = int(input("Un nombre : "))
    print(10 / x)
except ValueError:
    print("Ce n'est pas un nombre.")
except ZeroDivisionError:
    print("On ne divise pas par zéro !")

Le bloc else (si tout s'est bien passé)

try:
    x = int(input("Un nombre : "))
except ValueError:
    print("Mauvais nombre")
else:
    print(f"Bravo, x vaut {x}")

Le bloc finally (toujours exécuté)

Utile pour fermer un fichier, libérer une ressource… même en cas d'erreur.

try:
    f = open("data.txt")
    # ...
except FileNotFoundError:
    print("Fichier absent")
finally:
    print("Ce message s'affiche toujours")

Récupérer le message d'erreur

try:
    int("salut")
except ValueError as e:
    print(f"Erreur attrapée : {e}")
# Erreur attrapée : invalid literal for int() with base 10: 'salut'

Lever ses propres erreurs avec raise

def diviser(a, b):
    if b == 0:
        raise ValueError("On ne divise pas par zéro, gros malin")
    return a / b

try:
    diviser(10, 0)
except ValueError as e:
    print(e)

⚠ N'attrape pas tout sans réfléchir

try:
    ...
except:        # ❌ attrape même les Ctrl+C !
    pass

try:
    ...
except Exception:   # ✅ acceptable
    ...

💡 La règle : attrape les erreurs précises que tu sais gérer. Laisse remonter les autres : elles indiquent un vrai bug.

🧪 Quiz de validation

Réponds à toutes les questions. Il faut 70% de bonnes réponses pour valider le tuto !

🔒 Tu dois être connecté pour passer le quiz.