Em vez de envolver cada método de controller em try/catch, o Spring permite centralizar o tratamento de erros em uma classe anotada com @ControllerAdvice (ou @RestControllerAdvice). Métodos marcados com @ExceptionHandler capturam exceções lançadas em qualquer lugar dos seus controllers e as transformam em respostas HTTP consistentes.
Um handler global
{
ApiError {
(, ex.getMessage());
}
ApiError {
ex.getBindingResult().getFieldErrors().stream()
.map(e -> e.getField() + + e.getDefaultMessage())
.collect(Collectors.joining());
(, msg);
}
}
