En lugar de envolver cada método de controlador en try/catch, Spring te deja centralizar el manejo de errores en una clase anotada con @ControllerAdvice (o @RestControllerAdvice). Los métodos marcados con @ExceptionHandler capturan las excepciones lanzadas en cualquier punto de tus controladores y las convierten en respuestas HTTP consistentes.
Un handler global
{
ApiError {
(, ex.getMessage());
}
ApiError {
ex.getBindingResult().getFieldErrors().stream()
.map(e -> e.getField() + + e.getDefaultMessage())
.collect(Collectors.joining());
(, msg);
}
}
