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);