步骤
- 新建一个枚举类存放我们自定义的异常信息
- 新建一个异常处理类
- 在我们需要的地方直接throw
- 异常的全局捕获
- 异常捕获后JSON统一返回
都是固定代码直接复制粘贴
1.新建一个枚举类,里面存放异常信息
可以新建一个专门存放enum的包放到里面
/**
* @author
* @date 2020/7/30 14:46
* @description 异常类的枚举
*/
public enum YhxtExceptionEnum {
/**
* 自定义异常以及返回信息
*/
SYSTEM_INSERT_ERROR ("添加数据系统异常",501),
SYSTEM_UPDATE_ERROR ("修改数据系统异常",502),
private Integer code;
private String msg;
YhxtExceptionEnum(String msg, Integer code){
this.code = code;
this.msg = msg;
}
public Integer getCode() {return code;}
public String getMsg() {return msg;}
}
2.再自定义一个异常处理类
/**
* 自定义异常类
* @Author
* @Date 2021/5/10
*/
public class YhxtException extends RuntimeException{
private final Integer code;
public YhxtException(YhxtExceptionEnum exceptionEnum){
super(exceptionEnum.getMsg());
this.code = exceptionEnum.getCode();
}
public YhxtException(Integer code,String msg){
super(msg);
this.code = code;
}
public Integer getCode(){
return code;
}
}
3.有以上两个类就ok了,代码中如果有异常就直接 throw我们这个异常类就ok了
throw new YhxtException(YhxtExceptionEnum.PARAMS_MISS_ERROR);
4.异常的全局捕获,如果代码中有异常被抛出,则就可以在这捕获,并且给前段以jsom的形式返回
/**
* 异常捕获
*
* @Author mq
* @Date 2021/5/11
*/
@Slf4j
@ControllerAdvice
public class YhExceptionHandler {
@ExceptionHandler(YhxtException.class)
@ResponseBody
public Result handlerException(YhxtException yhxtException) {
log.error(yhxtException.getMessage(), yhxtException);
return ResultUtil.error(yhxtException.getMessage(), yhxtException.getCode());
}
}
5.JSON统一返回
public class ResultUtil {
public static Result success(Object o){
Result result = new Result();
result.setCode(0);
result.setMsg("成功");
result.setData(o);
return result;
}
public static Result success(){
return success(null);
}
public static Result error(String msg,Integer code){
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
}