快捷搜索: 王者荣耀 脱发

手动抛出异常回滚事务,且返回数据给前端

一、简介

有时候会遇到需要手动抛出异常来回滚事务的情况,一般抛出异常后显示的是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,"系统错误!");
经验分享 程序员 微信小程序 职场和发展