Aller au contenu principal

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:

  1. ✅ Créer des exceptions personnalisées
  2. ✅ Utiliser @ControllerAdvice pour une gestion globale
  3. ✅ Retourner des réponses d'erreur structurées
  4. ✅ Logger efficacement avec SLF4J
  5. ✅ 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​

TypeDurée
Théorie3h15 (4 chapitres)
Pratique3h (2 TPs)
Total6h15 (~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​

  1. Chapitre 1 → Comprendre les exceptions Java
  2. Chapitre 2 + TP10.1 → Implémenter la gestion globale
  3. Chapitre 3 → Apprendre le logging
  4. Chapitre 4 + TP10.2 → Configurer Logback

✅ Auto-Évaluation​

Avant de commencer, répondez:

  1. Savez-vous créer une exception personnalisée? ☐ Oui ☐ Non
  2. Connaissez-vous @ControllerAdvice? ☐ Oui ☐ Non
  3. Utilisez-vous System.out.println pour débugger? ☐ Oui ☐ Non
  4. 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


⬅️ Retour au Plan de Cours