全局异常处理@RestControllerAdvice

        在开发中出现异常后,可能需要一个统一处理的地方,来处理程序出现的异常,针对不同的异常做不同的处理,这里我们通过@ExceptionHandler注解来实现。

1.自定义异常

/**
 * 系统异常,自定义
 *
 */
public class BusinessException extends RuntimeException {

    private int code;

    /**
     * 继承exception,加入错误状态值
     *
     * @param resultCode 错误码枚举类
     */
    public BusinessException(ResponseStatusCode resultCode) {
        super(resultCode.getMessage());
    }

    public BusinessException(ResponseStatusCode resultCode, String msg) {
        super(resultCode.getMessage() + "," + msg);
        this.code = resultCode.getCode();
    }

    /**
     * 自定义错误信息
     *
     * @param message 异常信息
     */
    public BusinessException(String message) {
        super(message);
    }

    /**
     * 自定义错误信息
     *
     * @param code    异常码
     * @param message 异常信息
     */
    public BusinessException(int code, String message) {
        super(message);
        this.code = code;
    }

    public BusinessException(int code, String message, Throwable cause) {
        super(message, cause);
        this.code = code;
    }

    public int getCode() {
        return code;
    }

    public void setCode(int code) {
        this.code = code;
    }
}

2.自定义全局异常

/**
 * 全局异常处理
 *
 */
@Slf4j
@RestControllerAdvice
public class GlobalExceptionHandler {
 
    /**
     * 系统内部异常
     *
     * @param e Exception
     * @return Result
     */
    @ExceptionHandler(value = Exception.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Result handleException(Exception e) {
        log.error("系统内部异常,异常信息:", e);
        return ResultFactory.failed("系统异常,请联系管理人员", null);
    }

    /**
     * 自定义异常
     *
     * @param e BusinessException
     * @return Result
     */
    @ExceptionHandler(value = BusinessException.class)
    @ResponseStatus(HttpStatus.OK)
    public Result businessException(BusinessException e) {
        log.error("业务异常:{}", e);
        return ResultFactory.create(e.getCode(),e.getMessage(), null);
    }

    @ExceptionHandler(MaxUploadSizeExceededException.class)
    @ResponseStatus(HttpStatus.INTERNAL_SERVER_ERROR)
    public Result uploadException(MaxUploadSizeExceededException e) throws IOException {
        log.error("文件上传异常,上传数据过大:{}", e);
        return ResultFactory.create(ResponseStatusCode.INVALID_ARGUMENT.getCode(),"文件上传限制大小为10MB", null);
    }

}

3.调用方法

 private void validateRepeatRouteId(String id) {
      int count = gatewayRouteMapper.count(id);
      if (count >= 1) {
          //调用方法
          throw new BusinessException(ResponseStatusCode.INVALID_ARGUMENT, "路由id重复");
      }
}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值