Tengo una aplicación de arranque de primavera con puntos finales tranquilos. Quiero tener un controlador de errores global que básicamente atrape cualquier excepción para poder administrar la respuesta (es decir, no quiero exponer un gran seguimiento de pila de Java en la respuesta)
¿Cuál es la mejor manera de lograr esto?
Cree una clase de consejo de controlador con un controlador de excepciones que almacenará en caché todas las excepciones del tipo deseado.
@ControllerAdvice public class GlobalExceptionHandler { private static final Logger log = LoggerFactory.getLogger(GlobalExceptionHandler.class); @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR) @ExceptionHandler(Exception.class) public void handleAll(Exception e) { log.error("Unhandled exception occurred", e); } } Si lo desea, puede devolver un cuerpo del método como si fuera un método de controlador regular o simplemente devolver algún código de estado HTTP. El código anterior devuelve 500 usando la anotación @ResponseStatus .
Solo puede detectar tipos de excepción específicos. La anotación @ExceptionHandler acepta una matriz de excepciones como atributo de valor.