Spring启动 - 设置全局错误处理程序以屏蔽REST端点

时间:2017-03-20 15:24:01

标签: java spring spring-mvc spring-boot

我有一个带有restful端点的spring boot应用程序。我希望有一个全局错误处理程序,它基本上捕获任何异常,以便我可以管理响应(即不想在响应中公开一个大的java堆栈跟踪)

实现这一目标的最佳途径是什么?

1 个答案:

答案 0 :(得分:5)

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

@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注释接受一组例外作为值属性。