💻maths

Exceptions Python NSI : maîtriser try except au lycée

15 septembre 2026 7 min de lecture

Tu écris un programme Python et soudain, c'est le drame : ValueError, ZeroDivisionError, FileNotFoundError... Les erreurs font partie de la vie de tout programmeur. Mais savais-tu qu'en NSI, tu dois non seulement les comprendre, mais aussi apprendre à les gérer proprement ? C'est tout l'enjeu des exceptions Python NSI et de la structure try except. Dans cet article, on t'explique tout : ce qu'est une exception, comment l'attraper, comment la lever, et pourquoi c'est essentiel pour le bac. Prêt à transformer tes bugs en force ? C'est parti !

Qu'est-ce qu'une exception en Python ?

En Python, une exception est un événement qui se produit lorsqu'une erreur est détectée pendant l'exécution du programme. Contrairement aux erreurs de syntaxe (que Python repère avant même de lancer le code), les exceptions surviennent à l'exécution, quand le programme est déjà en train de tourner. Si tu ne les gères pas, le programme s'arrête brutalement et affiche une traceback (la pile d'appels).

Le programme NSI insiste beaucoup sur cette notion : tu dois savoir reconnaître les exceptions courantes, anticiper les situations à risque et écrire du code robuste. Par exemple, une division par zéro, un fichier introuvable, une conversion de texte en entier qui échoue... autant de cas où une exception peut être levée.

Les exceptions les plus fréquentes

  • ValueError : la valeur ne convient pas (ex. int("abc")).
  • TypeError : opération entre types incompatibles (ex. 1 + "a").
  • ZeroDivisionError : division par zéro.
  • IndexError : indice hors des limites d'une liste.
  • KeyError : clé absente dans un dictionnaire.
  • FileNotFoundError : fichier inexistant.

Tu retrouveras ces exceptions dans de nombreux exercices sur nsi-lycee.fr. Les connaître, c'est déjà la moitié du travail !

Comment gérer une exception avec try except ?

La structure try except est la brique de base de la gestion des erreurs en Python. Elle permet d'essayer un bloc de code et de capturer l'exception s'il y en a une, pour réagir sans faire planter tout le programme.

Syntaxe générale :

try:
    # code susceptible de lever une exception
except TypeDException:
    # code exécuté si cette exception est levée

Tu peux aussi ajouter else (exécuté si aucune exception) et finally (exécuté dans tous les cas). Voici un exemple complet :

try:
    num = int(input("Entrez un nombre : "))
    resultat = 10 / num
except ValueError:
    print("Ce n'est pas un nombre valide.")
except ZeroDivisionError:
    print("Division par zéro impossible.")
else:
    print("Résultat :", resultat)
finally:
    print("Fin du programme.")

Ici, si l'utilisateur tape "abc", une ValueError est levée et le message correspondant s'affiche. S'il tape 0, c'est ZeroDivisionError. Sinon, le résultat s'affiche. Dans tous les cas, le finally s'exécute.

Attraper plusieurs exceptions

Tu peux grouper plusieurs exceptions dans un même except :

except (ValueError, ZeroDivisionError):
    print("Erreur de saisie ou division par zéro.")

Ou utiliser un except Exception générique pour tout attraper, mais attention : c'est souvent considéré comme une mauvaise pratique car tu risques de masquer des bugs. Préfère des exceptions précises.

Lever une exception : le mot-clé raise

Parfois, tu voudras toi-même signaler une erreur dans ton code. C'est là qu'intervient raise. Tu peux lever une exception existante ou en créer une personnalisée.

Exemple :

def racine_carree(x):
    if x < 0:
        raise ValueError("Le nombre doit être positif.")
    return x ** 0.5

Si tu appelles racine_carree(-4), une ValueError est levée avec un message clair. Tu peux ensuite l'attraper avec try except.

Tu peux aussi définir tes propres exceptions en héritant de Exception :

class MonErreur(Exception):
    pass

raise MonErreur("Quelque chose s'est mal passé")

C'est utile pour créer des erreurs métier spécifiques à ton application.

Cas d'usage concret : un formulaire de saisie robuste

Imagine un programme qui demande à l'utilisateur de saisir son âge et de le stocker dans un fichier. Sans gestion d'erreurs, le programme planterait à la moindre saisie invalide. Avec try except, il devient robuste :

def demander_age():
    while True:
        try:
            age = int(input("Quel est votre âge ? "))
            if age < 0:
                raise ValueError("L'âge ne peut pas être négatif.")
            return age
        except ValueError as e:
            print(f"Erreur : {e}. Réessayez.")

age = demander_age()
print(f"Âge enregistré : {age}")

Ce code boucle jusqu'à obtenir une saisie valide. C'est exactement le genre de situation que tu pourrais rencontrer en projet NSI ou en exercice. Pour t'entraîner, va voir les exercices Python sur nsi-lycee.fr.

Autre cas classique : la lecture de fichier. Si le fichier n'existe pas, open() lève FileNotFoundError. Tu peux gérer ça proprement :

try:
    with open("donnees.txt", "r") as f:
        contenu = f.read()
except FileNotFoundError:
    print("Fichier introuvable. Vérifiez le chemin.")

Conseils de méthode et lien avec le bac NSI

Pour réussir les questions sur les exceptions au bac, adopte ces réflexes :

  • Identifie les points de fragilité : saisie utilisateur, division, accès à un fichier, indice de liste.
  • Choisis l'exception la plus précise possible : évite except Exception sauf raison valable.
  • Documente tes erreurs : un message clair aide au débogage.
  • Teste tes cas limites : que se passe-t-il si l'utilisateur entre 0, -1, une chaîne vide ?

Le programme officiel de NSI demande explicitement de savoir « gérer les erreurs et les exceptions ». Cela tombe régulièrement à l'écrit comme à l'oral (Grand Oral). Tu peux t'entraîner avec des annales ou des exercices corrigés sur nsi-lycee.fr.

Pour approfondir, n'hésite pas à consulter des ressources complémentaires comme Allolycée qui propose des fiches de révision, ou Allobac pour des conseils méthodologiques.

Conclusion

Les exceptions Python ne sont pas tes ennemies : ce sont des outils puissants pour écrire du code fiable. Avec try except, raise et les bonnes pratiques, tu peux anticiper les erreurs et rendre tes programmes plus professionnels. Alors, la prochaine fois qu'une exception surgit, ne panique pas : attrape-la ! Et pour aller plus loin, explore notre cours dédié aux erreurs en Python. Bon code et bonne réussite en NSI !

📚 Pour aller plus loin

Questions fréquentes

Qu'est-ce qu'une exception en Python ?

Une exception est un événement qui se produit lors de l'exécution d'un programme lorsqu'une erreur est détectée. Elle interrompt le flux normal du programme et peut être gérée avec try except.

Quelle est la différence entre une erreur de syntaxe et une exception ?

Une erreur de syntaxe empêche le programme de démarrer (Python ne peut pas l'interpréter). Une exception survient pendant l'exécution, quand le code est déjà en train de tourner.

Peut-on attraper plusieurs exceptions dans un même bloc except ?

Oui, en les regroupant dans un tuple : except (ValueError, TypeError):. Tu peux aussi avoir plusieurs blocs except pour des traitements différents.

À quoi sert le bloc finally ?

Le bloc finally s'exécute toujours, qu'une exception ait été levée ou non. Il est utile pour libérer des ressources (fermer un fichier, une connexion).

Comment lever une exception manuellement en Python ?

On utilise le mot-clé raise suivi d'une instance d'exception, par exemple raise ValueError("message").

Les exceptions sont-elles au programme du bac NSI ?

Oui, la gestion des erreurs et exceptions fait partie du programme de NSI. Tu dois savoir les identifier, les gérer avec try except et les lever avec raise.

Bravo ! Tu as lu cet article
Inscris-toi pour sauvegarder ta progression et gagner des XP
Creer mon compte
exceptions Python NSItry exceptgestion des erreursprogrammation Pythonbac NSIerreurs Pythoncours NSI
Pixel