一、简介
有时候会遇到需要手动抛出异常来回滚事务的情况,一般抛出异常后显示的是500服务器错误,如果想要返回json数据给前端的话,就可以用自定义异常类+全局异常捕捉。
二、自定义异常类
这里只定义了code码和msg消息,可以根据需要进行改造。
public class CommonException extends RuntimeException {
private int code;
private String msg;
public CommonException(int code,String msg){
super(msg);
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public String getMsg() {
return msg;
}
}
三、全局异常捕捉
捕捉我们自定义的CommonException异常,并返回json数据给前端。不会影响事务回滚。
import com.alibaba.fastjson.JSONObject;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* 全局异常捕捉类
*/
@ControllerAdvice
public class ExceptionControllerAdvice {
/*
捕捉自定义的CommonException异常
*/
@ExceptionHandler(CommonException.class)
@ResponseBody
public JSONObject CommonExceptionHandler(CommonException e) {
JSONObject jsonObject = new JSONObject();
jsonObject.put("code",e.getCode());
jsonObject.put("msg",e.getMsg());
return jsonObject;
}
}
四、手动抛出异常
在业务代码逻辑中使用如下代码手动抛出异常。
throw new CommonException(500,"系统错误!");