微服务自定义全局异常+处理器handler开发

DBC 1.6K 0

三个类

微服务自定义全局异常+处理器handler开发插图

import lombok.Data;
import net.xdclass.enums.BizCodeEnum;
import org.apache.ibatis.annotations.Param;
@Data
public class BizException extends RuntimeException {

    private int code;
    private String msg;

    public BizException(int code, String msg){
        super(msg);
        this.code = code;
        this.msg = msg;
    }

    public BizException(BizCodeEnum bizCodeEnum){
        super(bizCodeEnum.getMessage());
        this.code = bizCodeEnum.getCode();
        this.msg = bizCodeEnum.getMessage();
    }


}
import io.swagger.v3.oas.annotations.parameters.RequestBody;
import lombok.extern.slf4j.Slf4j;

import net.xdclass.utils.JsonData;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice
@Slf4j
public class CustomExceptionHandler {

    @ExceptionHandler(value = Exception.class)
    @ResponseBody
    public JsonData handle(Exception e){

        //是不是自定义异常
        if(e instanceof BizException){

            BizException bizException = (BizException) e;
            log.error("[业务异常 {}]",e);

            return JsonData.buildCodeAndMsg(bizException.getCode(),bizException.getMsg());

        }else{

            log.error("[系统异常 {}]",e);
            return JsonData.buildError("全局异常,未知错误");
        }

    }

}
import lombok.Getter;

/**
 * @author DBC
 * @date 2022/4/29 9:42
 */
public enum BizCodeEnum {
    ORDER_CONFIRM_TOKEN_EQUAL_FAIL(-1,"订单令牌不正确"),

    JV_SHUOMING(666666,"举例说明");

    @Getter
    private String message;

    @Getter
    private int code;

    private BizCodeEnum(int code, String message){
        this.code = code;
        this.message = message;
    }





}

即可看到效果

微服务自定义全局异常+处理器handler开发插图2
还可以有这种测试的方法

    @ApiOperation("根据ID查找地址详情")
    @GetMapping("/find/{address_id}")
    public Object detail(
                @ApiParam(value = "地址id",required = true)
             @PathVariable("address_id") long addressId){

        if (addressId==1){
            throw new BizException(-1,"测试自定义异常");
        }
        AddressDO addressDO = addressService.detail(addressId);
        return JsonData.buildSuccess(addressDO);
    }

微服务自定义全局异常+处理器handler开发插图4

发表评论 取消回复
表情 图片 链接 代码

分享