我有一个带有宁静端点的spring boot应用程序。我想拥有一个基本上捕获所有异常的全局错误处理程序,以便随后可以管理响应(即,不想在响应中公开大的java stacktrace)

什么是实现这一目标的最佳方法?

最佳答案

创建带有异常处理程序的控制器通知类,该处理程序将缓存所需类型的所有异常。

@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);
    }

}


如果愿意,您可以像从常规控制器方法中那样从方法中返回正文,也可以仅返回一些HTTP状态代码。上面的代码使用@ResponseStatus批注返回500。

您只能捕获特定的异常类型。 @ExceptionHandler批注接受一组异常作为value属性。

09-30 14:57
查看更多