MODULE 10 - Gestion des Exceptions et Logging
Bienvenue au Module 10! 📋
Votre application rencontre une erreur... que voit l'utilisateur? Un stack trace Java illisible? Ce module vous apprend à gérer les erreurs proprement et à tracer ce qui se passe dans votre application.
🎓 Objectifs d'Apprentissage
À la fin de ce module, vous serez capable de:
- ✅ Créer des exceptions personnalisées
- ✅ Utiliser @ControllerAdvice pour une gestion globale
- ✅ Retourner des réponses d'erreur structurées
- ✅ Logger efficacement avec SLF4J
- ✅ Configurer Logback pour différents environnements
📚 Prérequis
Avant de commencer ce module, vous devez avoir:
- ✅ Complété les Modules 1 à 9
- ✅ Créé des controllers REST
- ✅ Compris les codes HTTP (4xx, 5xx)
- ✅ Être familier avec les exceptions Java
🗺️ Plan du Module
Partie Théorique (4 chapitres)
Chapitre 1: Gestion des Exceptions
Durée: 45 minutes
Contenu:
- Exceptions personnalisées
- Hiérarchie d'exceptions
- Bonnes pratiques
- Checked vs Unchecked
Pourquoi important? La base de la gestion d'erreurs
Chapitre 2: @ControllerAdvice
Durée: 1 heure
Contenu:
- @ControllerAdvice et @RestControllerAdvice
- @ExceptionHandler
- Réponses d'erreur standardisées
- ProblemDetail (RFC 7807)
- ResponseStatusException
Pourquoi important? Gestion centralisée des erreurs
Chapitre 3: Logging avec SLF4J
Durée: 45 minutes
Contenu:
- SLF4J et façades de logging
- Niveaux de log (TRACE → ERROR)
- Logger patterns
- MDC (Mapped Diagnostic Context)
- Lombok @Slf4j
Pourquoi important? Diagnostiquer les problèmes
Chapitre 4: Configuration Logback
Durée: 45 minutes
Contenu:
- logback-spring.xml
- Appenders (Console, File, Rolling)
- Patterns et formatage
- Profils Spring
- Logs JSON pour production
Pourquoi important? Configuration professionnelle
Partie Pratique (2 TPs)
TP10.1: Gestion Centralisée des Erreurs
Durée: 1h30
Objectif: Implémenter un système complet de gestion d'erreurs
Vous allez:
- Créer des exceptions métier
- Implémenter un GlobalExceptionHandler
- Standardiser les réponses d'erreur
- Tester avec différents scénarios
TP10.2: Système de Logging
Durée: 1h30
Objectif: Configurer un logging professionnel
Vous allez:
- Configurer Logback
- Créer des logs par environnement
- Implémenter le MDC pour traçabilité
- Logs fichier avec rotation
📊 Durée Totale
| Type | Durée |
|---|---|
| Théorie | 3h15 (4 chapitres) |
| Pratique | 3h (2 TPs) |
| Total | 6h15 (~2 séances) |
🎯 Ce Que Vous Allez Comprendre
Avant ce Module
// Erreur non gérée 😰
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userRepository.findById(id).orElseThrow();
// → 500 Internal Server Error avec stack trace complet!
}
// Pas de logs
public void processOrder(Order order) {
// Ça marche? Ça échoue? Aucune idée...
}
Après ce Module
// Gestion propre des erreurs ✅
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
// → 404 {"type": "user-not-found", "title": "User not found", ...}
}
// Logging structuré
@Slf4j
public class OrderService {
public void processOrder(Order order) {
log.info("Processing order {} for user {}", order.getId(), order.getUserId());
// ...
log.debug("Order total calculated: {}", total);
}
}
Réponse d'erreur propre:
{
"type": "https://api.example.com/errors/user-not-found",
"title": "User Not Found",
"status": 404,
"detail": "User with ID 123 was not found",
"instance": "/api/users/123",
"timestamp": "2024-01-15T10:30:00Z"
}
🚀 Pourquoi Ce Module Est Essentiel
1. Expérience Utilisateur
Sans gestion:
- Stack trace exposé au client 😱
- Messages d'erreur cryptiques
- Difficile à débugger côté frontend
Avec gestion:
- Messages clairs et localisés
- Codes d'erreur documentés
- Format JSON standardisé
2. Débogage en Production
Sans logs:
- "L'application a planté hier soir"
- "Aucune idée de ce qui s'est passé"
- Impossible de reproduire
Avec logs:
- Trace complète des événements
- Contexte utilisateur (MDC)
- Filtrage par niveau
3. Conformité aux Standards
RFC 7807 - Problem Details for HTTP APIs
├── Format standardisé
├── Interopérabilité
└── Documentation automatique
🗺️ Progression dans la Formation
Module 10 = Application prête pour la production!
📖 Comment Aborder Ce Module
Progression Recommandée
- Chapitre 1 → Comprendre les exceptions Java
- Chapitre 2 + TP10.1 → Implémenter la gestion globale
- Chapitre 3 → Apprendre le logging
- Chapitre 4 + TP10.2 → Configurer Logback
✅ Auto-Évaluation
Avant de commencer, répondez:
- Savez-vous créer une exception personnalisée? ☐ Oui ☐ Non
- Connaissez-vous @ControllerAdvice? ☐ Oui ☐ Non
- Utilisez-vous System.out.println pour débugger? ☐ Oui ☐ Non
- Savez-vous configurer Logback? ☐ Oui ☐ Non
Si vous avez répondu "Non" quelque part, ce module est pour vous!
🎯 Prochaine Étape
Prêt à professionnaliser votre gestion d'erreurs?
➡️ Commencer avec le Chapitre 1: Gestion des Exceptions