Saltar al contenido principal

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:

  1. ✅ Crear excepciones personalizadas
  2. ✅ Utilizar @ControllerAdvice para una gestión global
  3. ✅ Devolver respuestas de error estructuradas
  4. ✅ Registrar eficientemente con SLF4J
  5. ✅ 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​

TipoDuración
Teoría3h15 (4 capítulos)
Práctica3h (2 TPs)
Total6h15 (~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​

  1. Capítulo 1 → Comprender las excepciones de Java
  2. Capítulo 2 + TP10.1 → Implementar la gestión global
  3. Capítulo 3 → Aprender sobre logging
  4. Capítulo 4 + TP10.2 → Configurar Logback

✅ Autoevaluación​

Antes de comenzar, responda:

  1. ¿Sabe crear una excepción personalizada? ☐ Sí ☐ No
  2. ¿Conoce @ControllerAdvice? ☐ Sí ☐ No
  3. ¿Utiliza System.out.println para depurar? ☐ Sí ☐ No
  4. ¿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


⬅️ Volver al Plan de Curso