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!