目录
1.自定义异常类
声明异常code和message,利用构造器传参,继承运行时异常
/**
* 异常类
*/
@Data
public class MyException extends RuntimeException {
private int code;
private String message;
public MyException(int code, String message) {
super(message);
this.code = code;
this.message = message;
}
public MyException(CodeEnum codeEnum) {
super(codeEnum.getMessage());
this.code = codeEnum.getCode();
this.message=codeEnum.getMessage();
}
}
2.自定义异常处理器
在接收异常类时,一定添加注解@ControllerAdvice,接着判断当前异常是否属于自定义异常类
/**
* 自定义异常处理器
*/
@ControllerAdvice
@Slf4j
public class MyExceptionHandler {
@ExceptionHandler(value = Exception.class)
@ResponseBody
public JsonData handler(Exception e) {
if (e instanceof MyException) {
//是不是自定义异常
MyException myException = (MyException) e;
log.error("业务异常:{}", e);
return JsonData.buildCodeAndMsg(myException.getCode(), myException.getMessage());
} else {
log.error("非业务异常:{}", e);
return JsonData.buildError("全局异常!未知错误!!");
}
}
}