我有一个带有宁静端点的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属性。