Gestion des erreurs
La gestion des erreurs consiste à identifier, capturer et traiter les erreurs qui peuvent survenir pendant l'exécution d'un programme.
Les erreurs peuvent être :
- Syntaxiques : erreurs de code (détectées par le compilateur)
- Logiques : erreurs dans la logique métier (ex. mauvaise formule)
- D'exécution (runtime) : division par zéro, fichier introuvable,...
La gestion des erreurs se concentre sur les erreurs d'exécution et les situations imprévues.
Pourquoi gérer les erreurs
- Fiabilité : éviter que le programme plante brutalement
- Robustesse : permettre au programme de continuer même en cas d'anomalie
- Maintenance : faciliter le débogage et la correction
- Sécurité : prévenir les comportements inattendus ou dangereux
Un programme sans gestion des erreurs est fragile et difficile à maintenir.
Types d'erreurs à gérer
| Type | Exemple |
|---|---|
| Entrée/saisie invalide | L'utilisateur entre un texte au lieu d'un nombre |
| Erreur de calcul | Division par zéro, racine carrée d'un nombre négatif |
| Erreur de fichier | Fichier inexistant, permissions insuffisantes |
| Erreur réseau | Perte de connexion, dépassement de délai |
| Exceptions système | Null pointer, dépassement de mémoire |
Méthodes classiques de gestion d'erreurs
Codes de retour (Procédural)
- La fonction retourne un code indiquant succès ou échec
- Exemple C :
Exceptions (langages modernes)
- Permettent de séparer le code normal du code d'erreur
- Exemple en Free Pascal :
- try ... except capture les exceptions
- Permet un traitement centralisé des erreurs
Vérifications préalables
- Toujours vérifier les préconditions avant d'exécuter un traitement
- Simple mais efficace dans des programmes procéduraux
Bonnes pratiques
- Ne pas ignorer les erreurs
- Fournir des messages clairs et précis
- Centraliser le traitement des erreurs si possible
- Différencier erreurs critiques et non critiques
- Documenter les exceptions / codes d'erreur
- Ne pas abuser des exceptions pour le flux normal
Exemple complet de gestion d'erreurs (Free Pascal)
- Program ExempleGestionErreurs;
-
- Uses SysUtils;
-
- Function Diviser(a,b:Integer):Double;Begin
- If b = 0 Then
- raise Exception.Create('Division par zéro interdite');
- Result := a / b;
- End;
-
- BEGIN
- Try
- Writeln('Résultat : ', Diviser(10, 0):0:2);
- Except
- On E: Exception do
- Writeln('Erreur détectée : ', E.Message);
- End;
- END.
- La fonction Diviser ne retourne pas de résultat incorrect
- L'erreur est capturée et affichée proprement
- Le programme continue ou se termine en contrôlant le flux
Stratégies avancées
Gestion hiérarchique
- Les erreurs critiques sont remontées au niveau supérieur
- Les erreurs mineures peuvent être ignorées ou journalisées
Journalisation (logging)
- Enregistrer toutes les erreurs pour analyse future
- Exemple : fichiers de journaux ou base de données
Tests associés
- Les tests unitaires doivent vérifier que les erreurs sont bien gérées
- Exemple : tester Diviser(10, 0) et vérifier qu'une exception est levée
Avantages d'une bonne gestion des erreurs
| Bénéfice | Explication |
|---|---|
| Robustesse | Le programme continue malgré les anomalies |
| Sécurité | Empêche comportements imprévus ou dangereux |
| Maintenance | Facilite le diagnostic et la correction |
| Lisibilité | Le code est clair sur le traitement normal vs erreur |
Transition vers la POO
En programmation orientée objet :
- Les exceptions deviennent la norme
- Les méthodes encapsulent la gestion des erreurs
- On peut créer ses propres types d'exceptions pour des erreurs métiers
Exemple : ECompteInsuffisant pour une méthode RetirerArgent d'une classe CompteBancaire
Résumé
- La gestion des erreurs est essentielle pour un code fiable et maintenable
- Techniques principales :
- Codes de retour (procédural)
- Exceptions (OO et langages modernes)
- Vérifications préalables
- Bonnes pratiques : messages clairs, centralisation, journalisation, tests
- En POO, elle devient partie intégrante des méthodes et objets
Règle d'or : un programme sans gestion d'erreurs est un programme fragile et dangereux.
Dernière mise à jour : Jeudi, le 1er janvier 2026