1. 建立 json 结果类,用于统一处理 json 结果
public class JsonResult<T> { // code=0表示成功,返回数据data。data!=0,表示错误,返回错误信息msg private int code; // 若有错误,data不生成json @JsonInclude(JsonInclude.Include.NON_NULL) private T data; // 若无错误,msg 不生成 json @JsonInclude(JsonInclude.Include.NON_NULL) private String msg; public JsonResult() { code = 0; } public JsonResult<T> ok(T data) { this.code = 0; this.data = data; return this; } public JsonResult<T> error(int code, String msg) { this.code = code; this.msg = msg; return this; } public T getData() { return data; } public void setData(T data) { this.data = data; } public int getCode() { return code; } public void setCode(int code) { this.code = code; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } }
2. 建立自定义异常类
public class CustemerException extends Exception { public CustemerException(String message) { super(message); } }
3. 建立 rest controller 的异常抓捕类
@RestControllerAdvice public class JsonExceptionHandler { @ExceptionHandler(value = Exception.class) public JsonResult<String> resolveException(HttpServletRequest request, HttpServletResponse response, Exception e) { JsonResult<String> result = new JsonResult<>(); return result.error(1, e.getMessage()); } }
4. 在 rest controller的方法中抛出异常
@Controller public class TestController { @RequestMapping("/test_error") public Object testError() throws Exception { if (true) { throw new CustemerException("抛出自定义异常"); } return 1; } }
5. 测试