统一异常处理

1.1 业务异常对象

  • 自定义异常 有 2 个属性:即 code、message。这样一对属性,有没有想到什么类一般也会定义这 2 个属性?没错,就是枚举类
public enum ErrorCode {

    SUCCESS(0, "成功"),

    LOGINERROR(1001, "用户名或者密码错误"),

    COMPANYERROR(9998, "机构id错误"),

    PARAMSERROR(9997, "参数错误"),

    DELETEERROR(9996, "此数据不可删除"),

    UPDATEEERROR(9995, "此数据不可修改"),

    ADDEERROR(9994, "数据保存失败"),

    DATAERROR(9993, "数据不合法"),

    ALIYUNERROR(9992, "上传阿里云失败"),

    NOTFOUND(9991, "数据不存在"),

    MEDIABINDERROR(8001, "数据状态不合法"),
    COURSEPUBSHRRROR(8002, "课程发布失败"),

    ORDERERROR(7001,"已购买过此课程"),
    PAYERROR(7002,"创建支付订单失败"),

    ERROR(9999,"服务器内部错误,请稍后再试");

    int code;
    String desc;

    public int getCode() {
        return code;
    }

    public String getDesc() {
        return desc;
    }

    ErrorCode(int code, String desc) {
        this.code = code;
        this.desc = desc;
    }
}

1.2 异常处理器

1.2.1导入依赖
<dependencies>
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-openfeign</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-web</artifactId>
        <scope>provided</scope>
    </dependency>

    <dependency>
        <groupId>com.xuecheng</groupId>
        <artifactId>xc-framework-commons</artifactId>
        <version>1.0-SNAPSHOT</version>
    </dependency>
</dependencies>
1.2.2配置异常处理器
import com.xuecheng.system.commons.enums.ErrorCode;
import com.xuecheng.system.commons.model.vo.ResponseResult;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice;

//全局异常处理器
@RestControllerAdvice
public class GlobalExceptionHandler {


    @ExceptionHandler(Exception.class)
    public ResponseResult exception(Exception e) {
        e.printStackTrace();
        return ResponseResult.errorResult(ErrorCode.ERROR);
    }

    @ExceptionHandler(BusinessException.class)
    public ResponseResult businessException(BusinessException e) {
        e.printStackTrace();
        ErrorCode errorCode = e.getErrorCode();
        return ResponseResult.errorResult(errorCode);
    }
}
1.2.3定义业务异常类
import com.xuecheng.system.commons.enums.ErrorCode;
import lombok.Data;

//自定义异常
@Data
public class BusinessException extends RuntimeException {

    private ErrorCode errorCode;

    public BusinessException(ErrorCode errorCode) {
        super(errorCode.getDesc());
        this.errorCode = errorCode;
    }

}
  • 如果异常处理类在别的微服务中需要添加
<dependency>
    <groupId>com.xuecheng</groupId>
    <artifactId>xc-framework-web</artifactId>
    <version>1.0-SNAPSHOT</version>
</dependency>
//组件扫描
@ComponentScan(
        basePackages = {
                "com. ? .system",
                "com. ? .web"
        }//扫描哪个包的注解
)
// 抛出异常
            throw new BusinessException(ErrorCode.LOGINERROR);
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值