【发布时间】:2016-04-16 03:01:52
【问题描述】:
我为我的程序创建了一个全局异常处理程序,它正在运行并捕获我的异常,但是当我尝试从 HttpServletResponse 获取状态代码时,我总是得到 200 状态。有什么办法可以从异常类中获得正确的状态?或者,如果您有其他工作,我将不胜感激。在网上找不到任何东西,我不想为通过我的处理程序的每个异常硬编码 httpStatus。我想用这种方法捕获所有异常。这是我在 GlobalExceptionHandler 类中创建的方法(仅供参考,我为该类使用了 @ControllerAdvice 注释):
@ExceptionHandler(value = Exception.class)
public @ResponseBody
ResponseEntity<Object> error(HttpServletRequest request, HttpServletResponse response, Exception e) throws Exception {
log.error("Error in call to " + request.getRequestURI() + " Response: " + response.toString(), e);
ExceptionResource exception = new ExceptionResource();
exception.setLocation(request.getRequestURI());
exception.setStatus(response.getStatus());
exception.setStackTrace(e.getStackTrace());
return new ResponseEntity<>(exception, HttpStatus.valueOf(response.getStatus()));
}
【问题讨论】:
标签: java rest exception-handling