Oi, Andrew! Tudo bem?
Ótima pergunta!
Como o código 500 é um erro genérico, que basicamente significa "algo deu errado no servidor", precisamos (como desenvolvedores) tratar esse erro e fornecer respostas mais úteis e informativas para os usuários da API.
Possuimos essa responsabilidade pois o Java, de fato, é capaz de detectar a ocorrencia de um erro, mas não sabe exatamente como nós queremos tratá-lo e nem retorna informações mais especificas para orientar o nosso usuário.
No caso do tratamento de erros que estamos fazendo no curso, quando ocorre um erro de validação (por exemplo, um campo obrigatório não foi preenchido), nós queremos retornar um código 400, que significa "Bad Request", ou seja, a requisição feita pelo cliente contém algum erro. Além disso, queremos retornar uma mensagem mais detalhada, informando qual campo específico está inválido.
Por isso criamos a classe TratadorDeErros
e utilizamos a anotação @ExceptionHandler
com a exceção MethodArgumentNotValidException
. Assim, sempre que essa exceção for lançada em algum Controller, nosso método tratarErro400
será acionado, e ele irá retornar uma resposta com código 400 e com detalhes sobre o erro de validação.
Espero ter ajudado! Caso tenha ficado alguma dúvida, sinta-se à vontade em comunicar, estou à disposição!
Um forte abraço e bons estudos!
Caso este post tenha te ajudado, por favor, marcar como solucionado ✓