个人技术分享

①统一返回结果

package com.ioc.exception;

import lombok.Data;

import java.io.Serializable;

/**
 * 后端统一返回结果
 * @param <T>
 */
@Data
//使用泛型对Result返回类进行了封装
public class Result<T> implements Serializable {

    private Integer code; //编码:1成功,0和其它数字为失败
    private String msg; //错误信息
    private T data; //数据

    public static <T> Result<T> success() {
        Result<T> result = new Result<T>();
        result.code = 1;
        return result;
    }

    public static <T> Result<T> success(T object) {
        Result<T> result = new Result<T>();
        result.data = object;
        result.code = 1;
        return result;
    }

    public static <T> Result<T> error(Integer code,String msg) {
        Result result = new Result();
        result.msg = msg;
        result.code = code;
        return result;
    }

}

 

②枚举类 

package com.ioc.exception;

/**
 * 枚举类
 */
public enum ExceptionMsg {
    ;

    private Integer code;
    private String msg;

    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }

    ExceptionMsg(Integer code, String msg) {
        this.code = code;
        this.msg = msg;
    }
}

 

③自定义异常类

package com.ioc.exception;

/**
 * 业务异常
 */
public class BaseException extends RuntimeException {

    private Integer code =500;
    private String msg = "";

    public BaseException(ExceptionMsg exceptionMsg) {
        this.code=exceptionMsg.getCode();
        this.msg = exceptionMsg.getMsg();
    }

    public BaseException(Integer code , String msg){
        super();
        this.msg=msg;
        this.code=code;
    }

    public BaseException(String msg) {
        super();
        this.msg=msg;
    }


    public Integer getCode() {
        return code;
    }

    public String getMsg() {
        return msg;
    }
}

 

 ④全局异常处理类

package com.ioc.exception;

import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

/**
 * 全局异常处理器,处理项目中抛出的业务异常
 */
@RestControllerAdvice
@Slf4j
public class GlobalExceptionHandler {

    /**
     * 捕获业务异常
     * @param ex
     * @return
     */
    @ExceptionHandler
    public Result exceptionHandler(BaseException ex){
        log.error("异常信息:{}", ex.getMessage());
        return Result.error(ex.getCode(),ex.getMsg());
    }
}