2021-04-20

1.LcdpExceptionHandlerAdvice

 /*** 全局异常拦截
 */
@Slf4j
@ControllerAdvice
public class LcdpExceptionHandlerAdvice {
/**
 * Lcdp全局异常
 * @param request
 * @param e
 * @return
 */
@ResponseBody
@ExceptionHandler(value = LcdpException.class)
public BaseResult verifyErrorHandler(HttpServletRequest request, LcdpException e) {
    log.error(e.getMessage(), e);
    BaseResult result = new BaseResult();
    result.setCode(e.getErrorCode());
    result.setMessage(e.getErrorMessage());
    //堆栈信息
    result.setStackMsg(getStackTrace(e));
    return result;
}

/**
 * RuntimeException未捕获异常
 * @param request
 * @param e
 * @return
 */
@ResponseBody
@ExceptionHandler(value = RuntimeException.class)
public BaseResult verifyErrorHandler(HttpServletRequest request, RuntimeException e) {
    log.error(e.getMessage(), e);
    BaseResult baseResult = new BaseResult();
    baseResult.setCode(LcdpMessageEnum.E99999.getCode());
    baseResult.setMessage(LcdpMessageEnum.E99999.getMessage());
    //堆栈信息
    baseResult.setStackMsg(getStackTrace(e));
    return baseResult;
}

/**
 * Exception未捕获异常
 * @param request
 * @param e
 * @return
 */
@ResponseBody
@ExceptionHandler(value = Exception.class)
public BaseResult verifyErrorHandler(HttpServletRequest request, Exception e) {
    log.error(e.getMessage(), e);
    BaseResult baseResult = new BaseResult();
    baseResult.setCode(LcdpMessageEnum.E99999.getCode());
    baseResult.setMessage(LcdpMessageEnum.E99999.getMessage());
    //堆栈信息
    baseResult.setStackMsg(getStackTrace(e));
    return baseResult;
}

/**
 * 兼容SpringAssert异常消息处理
 * @param request
 * @param e
 * @return
 */
@ResponseBody
@ExceptionHandler(value = IllegalArgumentException.class)
public BaseResult verifyErrorHandle(HttpServletRequest request, IllegalArgumentException e) {
    log.error(e.getMessage(), e);
    BaseResult result = new BaseResult();
    result.setCode("50000");
    result.setMessage(e.getMessage());
    //堆栈信息
    result.setStackMsg(getStackTrace(e));
    return result;
}

//HTTP 401
@ResponseBody
@ResponseStatus(value = HttpStatus.UNAUTHORIZED)
@ExceptionHandler(value = UnauthorizedException.class)
public BaseResult verifyErrorHandle(HttpServletRequest request, UnauthorizedException e) {
    log.error(e.getMessage(), e);
    BaseResult result = new BaseResult();
    result.setCode(LcdpMessageEnum.E401.getCode());
    result.setMessage(e.getMessage());
    //堆栈信息
    result.setStackMsg(getStackTrace(e));
    return result;
}

//HTTP 403
@ResponseBody
@ResponseStatus(value = HttpStatus.FORBIDDEN)
@ExceptionHandler(value = ForbiddenException.class)
public BaseResult verifyErrorHandle(HttpServletRequest request, ForbiddenException e) {
    log.error(e.getMessage(), e);
    BaseResult result = new BaseResult();
    result.setCode(LcdpMessageEnum.E403.getCode());
    result.setMessage(e.getMessage());
    //堆栈信息
    result.setStackMsg(getStackTrace(e));
    return result;
}

//HTTP 404
@ResponseBody
@ResponseStatus(value = HttpStatus.NOT_FOUND)
@ExceptionHandler(value = NotFoundException.class)
public BaseResult verifyErrorHandle(HttpServletRequest request, NotFoundException e) {
    log.error(e.getMessage(), e);
    BaseResult result = new BaseResult();
    result.setCode(LcdpMessageEnum.E404.getCode());
    result.setMessage(e.getMessage());
    //堆栈信息
    result.setStackMsg(getStackTrace(e));
    return result;
}

/**
 * 获取堆栈信息
 *
 * @param throwable
 * @return
 */
private String getStackTrace(Throwable throwable) {
    ByteArrayOutputStream buf = new ByteArrayOutputStream();
    throwable.printStackTrace(new PrintWriter(buf, true));
    return buf.toString();
}

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 2021年无为三中教职工庆“五一”篮球赛活动方案 牢记使命、不忘初心,无为三中人践行“三牛”精神默默奉献,...
    无为杨斌阅读 250评论 0 0
  • 今天感恩节哎,感谢一直在我身边的亲朋好友。感恩相遇!感恩不离不弃。 中午开了第一次的党会,身份的转变要...
    迷月闪星情阅读 10,610评论 0 11
  • 彩排完,天已黑
    刘凯书法阅读 4,275评论 1 3
  • 表情是什么,我认为表情就是表现出来的情绪。表情可以传达很多信息。高兴了当然就笑了,难过就哭了。两者是相互影响密不可...
    Persistenc_6aea阅读 126,050评论 2 7