From 799488798e3457b9865ab39e0bf74242c0d38537 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=A3=9E=E7=BF=94=E7=9A=84=E4=BA=94=E8=8A=B1=E8=82=89?= <492300924@qq.com> Date: Mon, 21 Jul 2025 01:22:02 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=9E=E7=8E=B0=E5=85=A8=E5=B1=80=E5=BC=82?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E4=BA=86=E5=8F=82=E6=95=B0=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E5=8A=9F=E8=83=BD=E6=A8=A1=E5=9D=97=EF=BC=8C=E6=90=AD=E9=85=8D?= =?UTF-8?q?=E4=B8=8A=E5=85=A8=E5=B1=80=E5=BC=82=E5=B8=B8=E7=AE=A1=E7=90=86?= =?UTF-8?q?=E5=99=A8=E5=B8=B8=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../WeblogSpringbootApplication.java | 13 ------- .../weblog/common/enums/ResponseCodeEnum.java | 2 ++ .../exception/GlobalExceptionHandler.java | 36 +++++++++++++++++++ .../weblog/web/controller/TestController.java | 11 ++++++ 4 files changed, 49 insertions(+), 13 deletions(-) delete mode 100644 src/main/java/com/qianyong/weblogspringboot/WeblogSpringbootApplication.java diff --git a/src/main/java/com/qianyong/weblogspringboot/WeblogSpringbootApplication.java b/src/main/java/com/qianyong/weblogspringboot/WeblogSpringbootApplication.java deleted file mode 100644 index ea74932..0000000 --- a/src/main/java/com/qianyong/weblogspringboot/WeblogSpringbootApplication.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.qianyong.weblogspringboot; - -import org.springframework.boot.SpringApplication; -import org.springframework.boot.autoconfigure.SpringBootApplication; - -@SpringBootApplication -public class WeblogSpringbootApplication { - - public static void main(String[] args) { - SpringApplication.run(WeblogSpringbootApplication.class, args); - } - -} diff --git a/weblog-module-common/src/main/java/com/qianyong/weblog/common/enums/ResponseCodeEnum.java b/weblog-module-common/src/main/java/com/qianyong/weblog/common/enums/ResponseCodeEnum.java index c115722..6780202 100644 --- a/weblog-module-common/src/main/java/com/qianyong/weblog/common/enums/ResponseCodeEnum.java +++ b/weblog-module-common/src/main/java/com/qianyong/weblog/common/enums/ResponseCodeEnum.java @@ -17,6 +17,8 @@ public enum ResponseCodeEnum implements BaseExceptionInterface { // ----------- 业务异常状态码 ----------- PRODUCT_NOT_FOUND("20000", "该产品不存在(测试使用)"), + //---------- 参数异常状态码 ----------- + PARAM_NOT_VALID("10001", "参数错误"), ; // 异常码 diff --git a/weblog-module-common/src/main/java/com/qianyong/weblog/common/exception/GlobalExceptionHandler.java b/weblog-module-common/src/main/java/com/qianyong/weblog/common/exception/GlobalExceptionHandler.java index 24a1a9d..5a826d7 100644 --- a/weblog-module-common/src/main/java/com/qianyong/weblog/common/exception/GlobalExceptionHandler.java +++ b/weblog-module-common/src/main/java/com/qianyong/weblog/common/exception/GlobalExceptionHandler.java @@ -3,12 +3,15 @@ package com.qianyong.weblog.common.exception; import com.qianyong.weblog.common.enums.ResponseCodeEnum; import com.qianyong.weblog.common.utils.Response; import lombok.extern.slf4j.Slf4j; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.MethodArgumentNotValidException; import org.springframework.web.bind.annotation.ControllerAdvice; import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest; +import java.util.Optional; /** * Created with IntelliJ IDEA. @@ -44,4 +47,37 @@ public class GlobalExceptionHandler { log.error("{} request error, ", request.getRequestURI(), e); return Response.fail(ResponseCodeEnum.SYSTEM_ERROR); } + + /** + * 捕获参数校验异常 + * @return + */ + @ExceptionHandler({ MethodArgumentNotValidException.class }) + @ResponseBody + public Response handleMethodArgumentNotValidException(HttpServletRequest request, MethodArgumentNotValidException e) { + // 参数错误异常码 + String errorCode = ResponseCodeEnum.PARAM_NOT_VALID.getErrorCode(); + // 获取 BindingResult + BindingResult bindingResult = e.getBindingResult(); + StringBuilder sb = new StringBuilder(); + // 获取校验不通过的字段,并组合错误信息,格式为: email 邮箱格式不正确, 当前值: '123124qq.com'; + Optional.ofNullable(bindingResult.getFieldErrors()).ifPresent(errors -> { + errors.forEach(error -> + sb.append(error.getField()) + .append(" ") + .append(error.getDefaultMessage()) + .append(", 当前值: '") + .append(error.getRejectedValue()) + .append("'; ") + + ); + }); + + // 错误信息 + String errorMessage = sb.toString(); + + log.warn("{} request error, errorCode: {}, errorMessage: {}", request.getRequestURI(), errorCode, errorMessage); + + return Response.fail(errorCode, errorMessage); + } } diff --git a/weblog-web/src/main/java/com/qianyong/weblog/web/controller/TestController.java b/weblog-web/src/main/java/com/qianyong/weblog/web/controller/TestController.java index 9cd4394..143bd44 100644 --- a/weblog-web/src/main/java/com/qianyong/weblog/web/controller/TestController.java +++ b/weblog-web/src/main/java/com/qianyong/weblog/web/controller/TestController.java @@ -96,4 +96,15 @@ public class TestController { int i = 1 / 0; return Response.success(); } + + /** + * 手动抛异常,入参是前面定义好的异常码枚举,返参统一交给全局异常处理器搞定 + * @param user + * @return + */ + @PostMapping("/test5") + @ApiOperationLog(description = "测试接口") + public Response test5(@RequestBody @Validated User user) { + return Response.success(); + } } -- Gitee