MÓDULO 10 - Gestión de Excepciones y Logging
¡Bienvenido al Módulo 10! 📋
Su aplicación encuentra un error... ¿qué ve el usuario? ¿Un stack trace de Java ilegible? Este módulo le enseña a manejar los errores de manera limpia y a rastrear lo que sucede en su aplicación.
🎓 Objetivos de Aprendizaje
Al final de este módulo, usted será capaz de:
- ✅ Crear excepciones personalizadas
- ✅ Utilizar @ControllerAdvice para una gestión global
- ✅ Devolver respuestas de error estructuradas
- ✅ Registrar eficientemente con SLF4J
- ✅ Configurar Logback para diferentes entornos
📚 Prerrequisitos
Antes de comenzar este módulo, usted debe haber:
- ✅ Completado los Módulos 1 a 9
- ✅ Creado controllers REST
- ✅ Comprendido los códigos HTTP (4xx, 5xx)
- ✅ Estar familiarizado con las excepciones de Java
🗺️ Plan del Módulo
Parte Teórica (4 capítulos)
Capítulo 1: Gestión de Excepciones
Duración: 45 minutos
Contenido:
- Excepciones personalizadas
- Jerarquía de excepciones
- Buenas prácticas
- Checked vs Unchecked
¿Por qué es importante? La base de la gestión de errores
Capítulo 2: @ControllerAdvice
Duración: 1 hora
Contenido:
- @ControllerAdvice y @RestControllerAdvice
- @ExceptionHandler
- Respuestas de error estandarizadas
- ProblemDetail (RFC 7807)
- ResponseStatusException
¿Por qué es importante? Gestión centralizada de errores
Capítulo 3: Logging con SLF4J
Duración: 45 minutos
Contenido:
- SLF4J y fachadas de logging
- Niveles de log (TRACE → ERROR)
- Patrones de logger
- MDC (Mapped Diagnostic Context)
- Lombok @Slf4j
¿Por qué es importante? Diagnosticar problemas
Capítulo 4: Configuración de Logback
Duración: 45 minutos
Contenido:
- logback-spring.xml
- Appenders (Console, File, Rolling)
- Patrones y formateo
- Perfiles de Spring
- Logs JSON para producción
¿Por qué es importante? Configuración profesional
Parte Práctica (2 TPs)
TP10.1: Gestión Centralizada de Errores
Duración: 1h30
Objetivo: Implementar un sistema completo de gestión de errores
Usted va a:
- Crear excepciones de negocio
- Implementar un GlobalExceptionHandler
- Estandarizar las respuestas de error
- Probar con diferentes escenarios
TP10.2: Sistema de Logging
Duración: 1h30
Objetivo: Configurar un logging profesional
Usted va a:
- Configurar Logback
- Crear logs por entorno
- Implementar el MDC para trazabilidad
- Logs en archivo con rotación
📊 Duración Total
| Tipo | Duración |
|---|---|
| Teoría | 3h15 (4 capítulos) |
| Práctica | 3h (2 TPs) |
| Total | 6h15 (~2 sesiones) |
🎯 Lo Que Va a Comprender
Antes de este Módulo
// Error no gestionado 😰
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userRepository.findById(id).orElseThrow();
// → 500 Internal Server Error con stack trace completo!
}
// Sin logs
public void processOrder(Order order) {
// ¿Funciona? ¿Falla? Ni idea...
}
Después de este Módulo
// Gestión limpia de errores ✅
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
// → 404 {"type": "user-not-found", "title": "User not found", ...}
}
// Logging estructurado
@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);
}
}
Respuesta de error limpia:
{
"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"
}
🚀 Por Qué Este Módulo Es Esencial
1. Experiencia de Usuario
Sin gestión:
- Stack trace expuesto al cliente 😱
- Mensajes de error crípticos
- Difícil de depurar en el frontend
Con gestión:
- Mensajes claros y localizados
- Códigos de error documentados
- Formato JSON estandarizado
2. Depuración en Producción
Sin logs:
- "La aplicación falló anoche"
- "Ni idea de lo que pasó"
- Imposible de reproducir
Con logs:
- Trazabilidad completa de los eventos
- Contexto de usuario (MDC)
- Filtrado por nivel
3. Cumplimiento de Estándares
RFC 7807 - Problem Details for HTTP APIs
├── Formato estandarizado
├── Interoperabilidad
└── Documentación automática
🗺️ Progresión en la Formación
¡Módulo 10 = Aplicación lista para producción!
📖 Cómo Abordar Este Módulo
Progresión Recomendada
- Capítulo 1 → Comprender las excepciones de Java
- Capítulo 2 + TP10.1 → Implementar la gestión global
- Capítulo 3 → Aprender sobre logging
- Capítulo 4 + TP10.2 → Configurar Logback
✅ Autoevaluación
Antes de comenzar, responda:
- ¿Sabe crear una excepción personalizada? ☐ Sí ☐ No
- ¿Conoce @ControllerAdvice? ☐ Sí ☐ No
- ¿Utiliza System.out.println para depurar? ☐ Sí ☐ No
- ¿Sabe configurar Logback? ☐ Sí ☐ No
¡Si ha respondido "No" en alguna, este módulo es para usted!
🎯 Próximo Paso
¿Listo para profesionalizar su gestión de errores?
➡️ Comenzar con el Capítulo 1: Gestión de Excepciones