MÓDULO 10 - Tratamento de Exceções e Logging
Bem-vindo ao Módulo 10! 📋
Sua aplicação encontra um erro... o que o usuário vê? Um stack trace Java ilegível? Este módulo ensina como tratar erros de forma limpa e rastrear o que acontece na sua aplicação.
🎓 Objetivos de Aprendizagem
Ao final deste módulo, você será capaz de:
- ✅ Criar exceções personalizadas
- ✅ Utilizar @ControllerAdvice para tratamento global
- ✅ Retornar respostas de erro estruturadas
- ✅ Fazer logging eficiente com SLF4J
- ✅ Configurar Logback para diferentes ambientes
📚 Pré-requisitos
Antes de começar este módulo, você deve ter:
- ✅ Completado os Módulos 1 a 9
- ✅ Criado controllers REST
- ✅ Compreendido os códigos HTTP (4xx, 5xx)
- ✅ Familiaridade com exceções Java
🗺️ Plano do Módulo
Parte Teórica (4 capítulos)
Capítulo 1: Tratamento de Exceções
Duração: 45 minutos
Conteúdo:
- Exceções personalizadas
- Hierarquia de exceções
- Boas práticas
- Checked vs Unchecked
Por que é importante? A base do tratamento de erros
Capítulo 2: @ControllerAdvice
Duração: 1 hora
Conteúdo:
- @ControllerAdvice e @RestControllerAdvice
- @ExceptionHandler
- Respostas de erro padronizadas
- ProblemDetail (RFC 7807)
- ResponseStatusException
Por que é importante? Tratamento centralizado de erros
Capítulo 3: Logging com SLF4J
Duração: 45 minutos
Conteúdo:
- SLF4J e fachadas de logging
- Níveis de log (TRACE → ERROR)
- Padrões de logger
- MDC (Mapped Diagnostic Context)
- Lombok @Slf4j
Por que é importante? Diagnosticar problemas
Capítulo 4: Configuração do Logback
Duração: 45 minutos
Conteúdo:
- logback-spring.xml
- Appenders (Console, File, Rolling)
- Padrões e formatação
- Perfis Spring
- Logs JSON para produção
Por que é importante? Configuração profissional
Parte Prática (2 TPs)
TP10.1: Tratamento Centralizado de Erros
Duração: 1h30
Objetivo: Implementar um sistema completo de tratamento de erros
Você vai:
- Criar exceções de negócio
- Implementar um GlobalExceptionHandler
- Padronizar as respostas de erro
- Testar com diferentes cenários
TP10.2: Sistema de Logging
Duração: 1h30
Objetivo: Configurar um logging profissional
Você vai:
- Configurar Logback
- Criar logs por ambiente
- Implementar o MDC para rastreabilidade
- Logs em arquivo com rotação
📊 Duração Total
| Tipo | Duração |
|---|---|
| Teoria | 3h15 (4 capítulos) |
| Prática | 3h (2 TPs) |
| Total | 6h15 (~2 sessões) |
🎯 O Que Você Vai Entender
Antes deste Módulo
// Erro não tratado 😰
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userRepository.findById(id).orElseThrow();
// → 500 Internal Server Error com stack trace completo!
}
// Sem logs
public void processOrder(Order order) {
// Funcionou? Falhou? Nenhuma ideia...
}
Após este Módulo
// Tratamento limpo de erros ✅
@GetMapping("/{id}")
public User getUser(@PathVariable Long id) {
return userService.findById(id);
// → 404 {"type": "user-not-found", "title": "User not found", ...}
}
// Logging estruturado
@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);
}
}
Resposta de erro limpa:
{
"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 Que Este Módulo É Essencial
1. Experiência do Usuário
Sem tratamento:
- Stack trace exposto ao cliente 😱
- Mensagens de erro confusas
- Difícil de debugar no frontend
Com tratamento:
- Mensagens claras e localizadas
- Códigos de erro documentados
- Formato JSON padronizado
2. Debug em Produção
Sem logs:
- "A aplicação caiu ontem à noite"
- "Nenhuma ideia do que aconteceu"
- Impossível reproduzir
Com logs:
- Rastro completo dos eventos
- Contexto do usuário (MDC)
- Filtragem por nível
3. Conformidade com Padrões
RFC 7807 - Problem Details for HTTP APIs
├── Formato padronizado
├── Interoperabilidade
└── Documentação automática
🗺️ Progressão na Formação
Módulo 10 = Aplicação pronta para produção!
📖 Como Abordar Este Módulo
Progressão Recomendada
- Capítulo 1 → Entender as exceções Java
- Capítulo 2 + TP10.1 → Implementar o tratamento global
- Capítulo 3 → Aprender sobre logging
- Capítulo 4 + TP10.2 → Configurar o Logback
✅ Autoavaliação
Antes de começar, responda:
- Você sabe criar uma exceção personalizada? ☐ Sim ☐ Não
- Você conhece o @ControllerAdvice? ☐ Sim ☐ Não
- Você usa System.out.println para debugar? ☐ Sim ☐ Não
- Você sabe configurar o Logback? ☐ Sim ☐ Não
Se você respondeu "Não" em alguma, este módulo é para você!
🎯 Próximo Passo
Pronto para profissionalizar o tratamento de erros?
➡️ Comece pelo Capítulo 1: Tratamento de Exceções