springboot统一处理异常

增加业务异常处理类:

package com.example.demo.config;

import lombok.Data;

@Data
public class BizException  extends RuntimeException{
    protected Integer errorCode;
    protected String errorMsg;

    public BizException(){

    }

    public BizException(Integer errorCode, String errorMsg) {
        this.errorCode = errorCode;
        this.errorMsg = errorMsg;
    }
}

 

设置异常handler:

package com.example.demo.config;

import lombok.Data;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;

@Data
class ErrorObj<T>{
    //是否成功
    private Boolean success;
    //状态码
    private Integer code;
    //提示信息
    private String msg;
    //数据
    private T data;
}
@ControllerAdvice
public class GlobalExceptionHandler {
    @ExceptionHandler(value =Exception.class)
    @ResponseBody
    public ErrorObj exceptionHandler(Exception e){
        System.out.println("发生了一个运行时异常"+e);

        ErrorObj errObj = new ErrorObj();
        errObj.setSuccess(false);
        errObj.setCode(1);
        errObj.setMsg(e.getMessage());
        errObj.setData("");
        return errObj;
    }

    @ExceptionHandler(value =BizException.class)
    @ResponseBody
    public ErrorObj bizexceptionHandler(BizException e){
        System.out.println("发生了一个业务异常"+e);

        ErrorObj errObj = new ErrorObj();
        errObj.setSuccess(false);
        errObj.setCode(e.getErrorCode());
        errObj.setMsg(e.getErrorMsg());
        errObj.setData("");
        return errObj;
    }
}

  

测试:

    @RequestMapping("/hello")
    public void hello() throws BizException {
        throw new BizException(1, "我抛出了一个错误");
    }
    @RequestMapping("/zeroException")
    public Integer zeroException(){
        return 100/0;
    }

 

执行结果:

{"success":false,"code":1,"msg":"/ by zero","data":""}
{"success":false,"code":1,"msg":"我抛出了一个错误","data":""}

 

命令行输出:

 

posted @ 2023-01-20 14:48  河北大学-徐小波  阅读(26)  评论(0编辑  收藏  举报