Numérique et Sciences Informatiques > Langages de Programmation > Gestion des Erreurs et Exceptions > Types d'erreurs
Les Exceptions : une gestion des erreurs sophistiquée
Découvrez comment gérer efficacement les erreurs en programmation à travers le concept des exceptions. Des explications claires et des exemples pratiques pour les lycéens.
Introduction aux Exceptions
En programmation, une exception est un événement anormal qui interrompt le flux normal d'exécution d'un programme. Plutôt que de planter brutalement, le programme peut *attraper* (catch) cette exception et prendre des mesures appropriées pour gérer la situation. Ce mécanisme permet de rendre les programmes plus robustes et plus fiables. La gestion des exceptions permet de séparer le code normal du code de gestion des erreurs, ce qui rend le code plus lisible et plus maintenable.
Le Bloc Try-Except (Python)
La plupart des langages de programmation offrent des mécanismes similaires pour gérer les exceptions. En Python, on utilise les blocs try
et except
.
Fonctionnement: try
.try
, l'exécution de ce bloc est interrompue et le contrôle est transféré au bloc except
correspondant au type d'exception levée.except
ne correspond à l'exception levée, le programme s'arrête.
Exemple:
Dans cet exemple, on tente de convertir l'entrée utilisateur en un entier et de diviser 10 par ce nombre. Si l'utilisateur entre une chaîne de caractères non numérique, une exception `ValueError` est levée, et le bloc try:
nombre = int(input("Entrez un nombre: "))
resultat = 10 / nombre
print("Le résultat est:", resultat)
except ValueError:
print("Erreur: Vous devez entrer un nombre entier.")
except ZeroDivisionError:
print("Erreur: Division par zéro impossible.")
except ValueError
est exécuté. Si l'utilisateur entre 0, une exception `ZeroDivisionError` est levée, et le bloc except ZeroDivisionError
est exécuté.
Le Bloc Finally
Le bloc finally
est optionnel et est exécuté après le bloc try
, qu'une exception ait été levée ou non. Il est généralement utilisé pour effectuer des opérations de nettoyage, comme fermer un fichier ou libérer des ressources.
Exemple:
Dans cet exemple, on tente d'ouvrir un fichier et de lire son contenu. Le bloc fichier = None
try:
fichier = open("monfichier.txt", "r")
contenu = fichier.read()
print(contenu)
except FileNotFoundError:
print("Erreur: Le fichier n'existe pas.")
finally:
if fichier:
fichier.close()
print("Fermeture du fichier.")
finally
assure que le fichier est fermé, même si une exception FileNotFoundError
est levée.
Lever des Exceptions Manuellement
Il est également possible de lever des exceptions manuellement à l'aide du mot-clé raise
. Cela peut être utile pour signaler des erreurs spécifiques ou pour propager une exception vers un niveau supérieur du code.
Exemple:
Dans cet exemple, la fonction def verifier_age(age):
if age < 0:
raise ValueError("L'âge ne peut pas être négatif.")
if age > 150:
raise ValueError("L'âge est improbable.")
print("Âge valide.")
try:
age = int(input("Entrez votre âge: "))
verifier_age(age)
except ValueError as e:
print("Erreur:", e)
verifier_age
lève une exception ValueError
si l'âge est négatif ou supérieur à 150.
Gérer Plusieurs Types d'Exceptions
Il est possible de gérer différents types d'exceptions dans un même bloc try
en utilisant plusieurs blocs except
. Cela permet de traiter chaque type d'erreur de manière appropriée. Il est aussi possible d'attraper toutes les exceptions en utilisant 'except Exception as e:' try:
# Code qui peut lever différentes exceptions
except ValueError as e:
print("Erreur de valeur:", e)
except TypeError as e:
print("Erreur de type:", e)
except Exception as e:
print("Une erreur est survenue:", e)
Ce qu'il faut retenir
try
, et le code de gestion des exceptions est placé dans le bloc except
.
FAQ
-
Quelle est la différence entre gérer une erreur avec un if/else et avec un try/except?
Un if/else est utilisé pour gérer des conditions prévisibles. Un try/except est utilisé pour gérer des situations exceptionnelles et imprévisibles qui pourraient faire planter le programme. -
Pourquoi est-il important de gérer les exceptions?
Pour rendre les programmes plus robustes, éviter les plantages, et séparer le code normal du code de gestion des erreurs.