Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Dúvida] Tratar erro 400

Nessa implementação da classe TratadorDeErros existem dois métodos com a mesma assinatura (tratarErro400), não entendi muito bem a diferença entre os dois, sei que eles vão retornar um badRequest e o primeiro método trata erros de validação, mas o segundo?

2 respostas
solução!

Oi Daniela!

Existem algumas situações de erros que o Spring pode lançar diferentes exceptions, para representar problemas distintos. Um exemplo disso é justamente em relação ao erro 400.

Se na requisição são enviados parâmetros que não estão de acordo com as anotações do Bean Validation (@NotNull, @NotBlank, etc.) o Spring lança a exception MethodArgumentNotValidException. Mas quando é enviado um json invalido (formatação incorreta ou mesmo outro formato que não seja json, como xml) o Spring já lança outra exception, que seria a HttpMessageNotReadableException.

Ou seja, se você quiser tratar cada possibilidade distinta, terá que criar vários métodos distintos na classe de tratamento de erros, sendo um para cada exception possível.

O nome dos métodos poderiam ser diferentes, mas como os parâmetros são distintos, é possível utilizar a sobrecarga de métodos para declarar todos eles com o mesmo nome ;)

Bons estudos!

Entendido Professor, muito obrigada!