发布时间:2023-08-13 16:00
我们在工作中常常喜欢在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"
}