您的位置:首页 > 其它

Web应用的统一异常处理

2017-03-23 00:00 423 查看
参考:http://blog.didispace.com/springbootexception/

@ControllerAdvice

// 异常json返回对象

public class ErrorResponse {

private String code;

private String msg;

public ErrorResponse(String code, String msg) {
this.code = code;
this.msg = msg;
}
// 省略

}

// 自定义异常

public class BusinessErrorException extends Exception {

private String code;

private String message;

public BusinessErrorException(String code, String message) {
super();
this.code = code;
this.message = message;
}

}

// web统一异常处理

@ControllerAdvice(basePackages = "com.")
public class ApiExceptionHandler {

// 业务异常处理
@ExceptionHandler(BusinessErrorException.class)
@ResponseStatus(value = HttpStatus.BAD_REQUEST)
@ResponseBody
public ErrorResponse handleBusinessError(BusinessErrorException ex) {
return new ErrorResponse(ex.getCode(), ex.getMessage());
}

// 500系统内部错误
@ExceptionHandler(RuntimeException.class)
@ResponseStatus(value = HttpStatus.INTERNAL_SERVER_ERROR)
@ResponseBody
public ErrorResponse handleUnexpectedServer(RuntimeException ex) {
logger.error("系统错误", ex);

return new ErrorResponse(ErrorCodes.SYSTEM_ERROR, ex.getMessage());
}

// 指定页面 error.html 展示
@ExceptionHandler(value = Exception.class)
public ModelAndView defaultErrorHandler(HttpServletRequest req, Exception e) throws Exception {
ModelAndView mav = new ModelAndView();
mav.addObject("exception", e);
mav.addObject("url", req.getRequestURL());
mav.setViewName("error");
return mav;
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: