Skip to content

Commit deaad01

Browse files
committed
feat: 添加接口请求参数异常的统一处理逻辑
1 parent 6ed36f4 commit deaad01

1 file changed

Lines changed: 26 additions & 3 deletions

File tree

src/main/java/top/cadecode/simple/common/exception/SimpleExceptionHandler.java

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,14 @@
33
import lombok.extern.slf4j.Slf4j;
44
import org.springframework.boot.web.error.ErrorAttributeOptions;
55
import org.springframework.boot.web.servlet.error.DefaultErrorAttributes;
6+
import org.springframework.http.converter.HttpMessageNotReadableException;
7+
import org.springframework.web.bind.MissingServletRequestParameterException;
68
import org.springframework.web.bind.annotation.ControllerAdvice;
79
import org.springframework.web.bind.annotation.ExceptionHandler;
810
import org.springframework.web.bind.annotation.ResponseBody;
911
import org.springframework.web.context.request.WebRequest;
1012
import top.cadecode.simple.common.response.SimpleRes;
13+
import top.cadecode.simple.common.response.SimpleRes.ResError;
1114
import top.cadecode.simple.constant.ErrorEnum;
1215
import top.cadecode.simple.constant.StatusEnum;
1316
import top.cadecode.simple.util.MapUtil;
@@ -46,13 +49,24 @@ public SimpleRes handleSimpleException(SimpleException e, HttpServletRequest req
4649
public SimpleRes handleOtherException(Exception e, HttpServletRequest request,
4750
HttpServletResponse response) {
4851
log.error("Exception Handler =>", e);
52+
// 处理 SpringMVC 异常
53+
if (e instanceof MissingServletRequestParameterException) {
54+
return SimpleRes.fail(ErrorEnum.REQ_PARAM_INVALID)
55+
.path(request)
56+
.status(response);
57+
}
58+
if (e instanceof HttpMessageNotReadableException) {
59+
return SimpleRes.fail(ErrorEnum.REQ_BODY_INVALID)
60+
.path(request)
61+
.status(response);
62+
}
4963
return SimpleRes.fail(ErrorEnum.UNKNOWN)
5064
.path(request)
5165
.status(response);
5266
}
5367

5468
/**
55-
* 自定义 SpringMVC 404 返回内容
69+
* 自定义 SpringMVC 404、405 返回内容
5670
*/
5771
private static final String STATUS_KEY = "status";
5872
private static final String MESSAGE_KEY = "message";
@@ -66,13 +80,22 @@ public Map<String, Object> getErrorAttributes(WebRequest webRequest, ErrorAttrib
6680
// 获取状态码与路径
6781
int status = (int) errorAttributes.get(STATUS_KEY);
6882
String path = (String) errorAttributes.get(PATH_KEY);
69-
String error = (String) errorAttributes.get(ERROR_KEY);
70-
// 处理 404 异常
83+
// 处理 404
7184
if (status == StatusEnum.NOT_EXIT.getStatus()) {
7285
return MapUtil.create()
7386
.add(STATUS_KEY, StatusEnum.NOT_EXIT.getStatus())
7487
.add(MESSAGE_KEY, StatusEnum.NOT_EXIT.getMessage())
7588
.add(PATH_KEY, path)
89+
.add(ERROR_KEY, new ResError(ErrorEnum.API_NOT_EXIST))
90+
.asMap();
91+
}
92+
// 处理 405
93+
if (status == StatusEnum.NOT_FIT.getStatus()) {
94+
return MapUtil.create()
95+
.add(STATUS_KEY, StatusEnum.NOT_FIT.getStatus())
96+
.add(MESSAGE_KEY, StatusEnum.NOT_FIT.getMessage())
97+
.add(PATH_KEY, path)
98+
.add(ERROR_KEY, new ResError(ErrorEnum.REQ_METHOD_INVALID))
7699
.asMap();
77100
}
78101
return errorAttributes;

0 commit comments

Comments
 (0)