Pular para o conteúdo principal

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:

  1. ✅ Criar exceções personalizadas
  2. ✅ Utilizar @ControllerAdvice para tratamento global
  3. ✅ Retornar respostas de erro estruturadas
  4. ✅ Fazer logging eficiente com SLF4J
  5. ✅ 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​

TipoDuração
Teoria3h15 (4 capítulos)
Prática3h (2 TPs)
Total6h15 (~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​

  1. Capítulo 1 → Entender as exceções Java
  2. Capítulo 2 + TP10.1 → Implementar o tratamento global
  3. Capítulo 3 → Aprender sobre logging
  4. Capítulo 4 + TP10.2 → Configurar o Logback

✅ Autoavaliação​

Antes de começar, responda:

  1. Você sabe criar uma exceção personalizada? ☐ Sim ☐ Não
  2. Você conhece o @ControllerAdvice? ☐ Sim ☐ Não
  3. Você usa System.out.println para debugar? ☐ Sim ☐ Não
  4. 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


⬅️ Voltar ao Plano de Curso