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 ea749322ded93cb6942a67071ed71ea1ab08aefa..0000000000000000000000000000000000000000 --- 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 c11572274b689b3326c306be2cdd83e47e321865..6780202fe0e500a8f5182b61603f631ca385d66c 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 24a1a9d9f3087f5dc87661fe4c6a65edd517826c..5a826d7dfa0eb04d46c6c4f1a6e81a707019a99a 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 9cd4394d0badadb683fd75d979b20321f13c8b10..143bd4455cd9d7e30f5519ae9214140066e2dba4 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(); + } }