首页 > 其他分享 >SpringBoot全局捕获异常并返回给前端

SpringBoot全局捕获异常并返回给前端

时间:2022-09-26 14:13:36浏览次数:50  
标签:RuleException status code String 捕获 message 全局 public SpringBoot

1.自定义一个异常类:

public class RuleException extends RuntimeException {
    private static final long serialVersionUID = -8624533394127244753L;

    public RuleException() {
    }

    public RuleException(String msg) {
        super(msg);
    }

    public RuleException(Exception ex) {
        super(ex);
        ex.printStackTrace();
    }
}

2.返回给前端的实体类:

public class Result {

    private String code;

    private String message;

    private String status;

    public String getCode() {
        return code;
    }

    public void setCode(String code) {
        this.code = code;
    }

    public String getMessage() {
        return message;
    }

    public void setMessage(String message) {
        this.message = message;
    }

    public String getStatus() {
        return status;
    }

    public void setStatus(String status) {
        this.status = status;
    }
}

3.ExceptionAdvice类

import com.christopher.rule.RuleException;
import org.springframework.web.bind.annotation.ControllerAdvice;
import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;

@RestController
@ControllerAdvice //@ControllerAdvice(控制器增强。该注解可以把其声明的类中使用@ExceptionHandler、@InitBinder、@ModelAttribute注解的方法应用到所有的 @RequestMapping注解的方法)声明一个拦截全局异常的@ExceptionHandler
public class ExceptionAdvice {

    @ExceptionHandler(RuleException.class) //@ExceptionHandler拦截相应异常
    @ResponseBody
    public Result handleException(Exception e) {
        Result result = new Result();
        result.setStatus("500");
        result.setMessage(e.getMessage());
        return result;
    }
}

4.效果

标签:RuleException,status,code,String,捕获,message,全局,public,SpringBoot
From: https://www.cnblogs.com/huangxuannn/p/16730700.html

相关文章