手动抛出异常回滚事务,且返回数据给前端
一、简介
有时候会遇到需要手动抛出异常来回滚事务的情况,一般抛出异常后显示的是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,"系统错误!");