springBoot全局返回类型与错误处理
springBoot在会因返回数据类型不同而难以处理,为此定义全局返回类型Result:

点击查看代码
package com.demo.common;
public class Result {
private String code;
private String msg;
private Object data;
public static Result success() {
Result result = new Result();
result.setCode("200");
result.setMsg("请求成功");
return result;
}
public static Result success(Object data) {
Result result = success();
result.setData(data);
return result;
}
public static Result error() {
Result result = new Result();
result.setCode("500");
result.setMsg("系统错误");
return result;
}
public static Result error(String code, String msg) {
Result result = new Result();
result.setCode(code);
result.setMsg(msg);
return result;
}
public String getCode() {
return code;
}
public void setCode(String code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public Object getData() {
return data;
}
public void setData(Object data) {
this.data = data;
}
}
点击查看代码
package com.demo.exception;
import com.demo.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice("com.demo.controller")
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody // 返回json串
public Result error(Exception e) {
e.printStackTrace();
return Result.error();
}
@ExceptionHandler(CustomException.class)
@ResponseBody // 返回json串
public Result error(CustomException e) {
return Result.error(e.getCode(), e.getMsg());
}
}


再定义CustomException类实现手动添加错误提示:


代码:
点击查看代码
package com.demo.exception;
import com.demo.common.Result;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
@ControllerAdvice("com.demo.controller")
public class GlobalExceptionHandler {
@ExceptionHandler(Exception.class)
@ResponseBody // 返回json串
public Result error(Exception e) {
e.printStackTrace();
return Result.error();
}
@ExceptionHandler(CustomException.class)
@ResponseBody // 返回json串
public Result error(CustomException e) {
return Result.error(e.getCode(), e.getMsg());
}
}

浙公网安备 33010602011771号