springBoot全局异常定义

我们在工作中常常喜欢在service层,写一些代码逻辑,有时候当不符合制定条件,你想告诉前端,如何返回,那如何要做多个不同的返回,在controller层定义是最方便了,但是那样就会让controller层失去了,他controller的意义,会让整体变得复杂。那有时候想在service定义,或者在其他的类中定义,并不通过controller层,告诉前端,我返回了什么内容怎么办呢?

这里就要做2件事

1.写一个地方抛出异常

2.写一个全局异常类,去覆盖springBoot的默认异常类

抛出异常

springBoot全局异常定义_第1张图片

全局异常类

package com.example.etf.story.tools;

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 GloablExceptionHandler {
    @ResponseBody
    @ExceptionHandler(Exception.class)
    public Object handleException(Exception e) {
        String msg = e.getMessage();
        if (msg == null || msg.equals("")) {
            msg = "服务器出错";
        }
        JSONObject jsonObject = new JSONObject();
        jsonObject.put("message", msg);
        jsonObject.put("status",500);
        return jsonObject;
    }
}

 @ControllerAdvice的意思就是覆盖,springBoot的默认异常

springBoot全局异常定义_第2张图片

 如果你不定义覆盖类,则会出现

{
"timestamp": "2022-07-05T08:14:05.054+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/story/selectStorysByPublic"
}

你可能感兴趣的:(BUG,java,spring,boot,java,spring)