全局异常处理统一接口返回

创建统一返回结果类

@Data
public class Result implements Serializable {
    private Boolean success;

    private Integer code;

    private String msg;

    private Object data;

    // 构造器私有
    private Result(){}

    // 通用返回成功
    public static Result ok() {
        Result r = new Result();
        r.setSuccess(ResultCodeEnum.SUCCESS.getSuccess());
        r.setCode(ResultCodeEnum.SUCCESS.getCode());
        r.setMsg(ResultCodeEnum.SUCCESS.getMessage());
        return r;
    }

    // 通用返回失败,未知错误
    public static Result error() {
        Result r = new Result();
        r.setSuccess(ResultCodeEnum.UNKNOWN_ERROR.getSuccess());
        r.setCode(ResultCodeEnum.UNKNOWN_ERROR.getCode());
        r.setMsg(ResultCodeEnum.UNKNOWN_ERROR.getMessage());
        return r;
    }

    // 设置结果,形参为结果枚举
    public static Result setResult(ResultCodeEnum result) {
        Result r = new Result();
        r.setSuccess(result.getSuccess());
        r.setCode(result.getCode());
        r.setMsg(result.getMessage());
        return r;
    }

    /**------------使用链式编程,返回类本身-----------**/

    // 自定义返回数据
    public Result data(Object o) {
        this.setData(o);
        return this;
    }

    // 自定义状态信息
    public Result message(String message) {
        this.setMsg(message);
        return this;
    }

    // 自定义状态码
    public Result code(Integer code) {
        this.setCode(code);
        return this;
    }

    // 自定义返回结果
    public Result success(Boolean success) {
        this.setSuccess(success);
        return this;
    }

    //返回json
    public Object toJSON(){
       return JSONObject.toJSON(this);
    }
}

创建结果状态枚举类

/**
 * 统一结果返回标志
 */
@Getter
public enum  ResultCodeEnum {
    SUCCESS(true,200,"成功"),

    UNKNOWN_ERROR(false,500,"内部错误,请联系管理员"),

    PARAM_ERROR(false,501,"参数错误");

    // 响应是否成功
    private Boolean success;
    // 响应状态码
    private Integer code;
    // 响应信息
    private String message;

    ResultCodeEnum(boolean success, Integer code, String message) {
        this.success = success;
        this.code = code;
        this.message = message;
    }
}

使用ControllerAdvice注解

具体异常可继续添加

@ControllerAdvice
public class RestCtrlExceptionHandler {


    @ExceptionHandler(Exception.class)
    @ResponseBody
    public Result handleException(Exception e){
        return Result.error().code(500).message(e.getMessage()+",内部异常,请联系管理员");
    }
}

然后controller层返回结果的时候不用在写tryCatch了 ,返回结果的时候也用Result封装一下,起码这样返回给其他平台调用的时候格式统一,但凡服务出问题也不至于把本地的异常抛给下游

示例返回

     return Result.ok().data(array_data);

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值