1. 自定义异常捕获
- 自定的异常
@Data
@AllArgsConstructor //生成有参构造函数
@NoArgsConstructor //生存无参构造函数
public class ZidingyiException extends RuntimeException {
private Integer code ;//状态码
private String message;//异常信息
}
2 捕获异常
/**
* 捕获全局异常
*
**/
@ControllerAdvice //切面
public class GlobalExceptionHandler {
//自定义异常
@ExceptionHandler(ZidingyiException.class)//对所有的异常处理
@ResponseBody
public R error(ZidingyiException e){
e.printStackTrace();
//return e.getCode()+e.getMessage();
return R.fail().code(ResultCode.ERROR).message("fail").data("item",null);
}
//定义捕获全局的异常
@ExceptionHandler(Exception.class)//对所有的异常处理
@ResponseBody
public Object error(Exception e){
e.printStackTrace();
//return e.getMessage();
return R.fail().code(ResultCode.ERROR).message("fail").data("item",null);
}
}
========================================================
2. 自定返回json 数据格式
- 自定义两个code
public interface ResultCode {
int SUCCESS = 200 ;
int ERROR = 500 ;
}
- 定义链式编程的返回json数据
/**
* 自定义统一返回的json数据
**/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class R {
private Boolean success;
private Integer code;
private String message;
private Map<String,Object> data = new HashMap<>();
//返回失败的方法
public static R fail(){
R r = new R();
r.setSuccess(false);
r.setCode(ResultCode.ERROR);
r.setMessage("失败");
return r;
}
//返回成功的方法
public static R ok(){
R r = new R();
r.setSuccess(true);
r.setCode(ResultCode.SUCCESS);
r.setMessage("成功");
return r;
}
public R success(Boolean success){
this.setSuccess(success);
return this;
}
public R code(Integer code) {
this.code = code;
return this;
}
public R message(String message) {
this.message = message;
return this;
}
public R data(Map<String, Object> data) {
this.data = data;
return this;
}
public R data(String key, Object value) {
this.data.put(key,value);
return this;
}
}
网友评论