我们在工作中常常喜欢在service层,写一些代码逻辑,有时候当不符合制定条件,你想告诉前端,如何返回,那如何要做多个不同的返回,在controller层定义是最方便了,但是那样就会让controller层失去了,他controller的意义,会让整体变得复杂。那有时候想在service定义,或者在其他的类中定义,并不通过controller层,告诉前端,我返回了什么内容怎么办呢?
这里就要做2件事
1.写一个地方抛出异常
2.写一个全局异常类,去覆盖springBoot的默认异常类
抛出异常
全局异常类
- 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的默认异常
如果你不定义覆盖类,则会出现
{
"timestamp": "2022-07-05T08:14:05.054+00:00",
"status": 500,
"error": "Internal Server Error",
"path": "/story/selectStorysByPublic"
}