1
resposta

[Dúvida] Exception

Estou em duvida sobre um ponto, na classe de tratamento de erro a gente usa a diretiva do erro que queremos associar ao nosso método e se em algum Controller acabar tendo essa exception nosso método entra em ação mas se o Java consegue detectar que o erro que teve na api é X, pq o próprio Java não lança o erro correto ao invés de jogar um código 500?

1 resposta

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 ✓