瀏覽代碼

fix:合并两份错误处理代码

sky 5 年之前
父節點
當前提交
28a26a2688

+ 0 - 57
seec-data-server/src/main/java/cn/seecoder/data/server/controller/ControllerAdvice.java

@@ -1,57 +0,0 @@
-package cn.seecoder.data.server.controller;
-
-import cn.seecoder.data.server.controller.response.ErrorResponse;
-import cn.seecoder.data.server.exception.SeecDataException;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.HttpStatus;
-import org.springframework.http.ResponseEntity;
-import org.springframework.validation.BindException;
-import org.springframework.web.HttpRequestMethodNotSupportedException;
-import org.springframework.web.bind.MethodArgumentNotValidException;
-import org.springframework.web.bind.annotation.ExceptionHandler;
-import org.springframework.web.bind.annotation.RestControllerAdvice;
-import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
-
-import javax.validation.ConstraintViolationException;
-import java.util.Objects;
-
-@Slf4j
-@RestControllerAdvice
-public class ControllerAdvice {
-    @ExceptionHandler(MethodArgumentNotValidException.class)
-    public ResponseEntity<ErrorResponse> handleMethodArgumentNotValidatedException(MethodArgumentNotValidException e) {
-        return ResponseEntity.badRequest().body(ErrorResponse.of(Objects.requireNonNull(e.getBindingResult().getFieldError()).getDefaultMessage()));
-    }
-
-    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
-    public ResponseEntity<ErrorResponse> handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) {
-        log.error(e.getParameter().getParameterName(), e);
-        return ResponseEntity.badRequest().body(ErrorResponse.of("路径参数错误"));
-    }
-
-    @ExceptionHandler(ConstraintViolationException.class)
-    public ResponseEntity<ErrorResponse> handleConstraintViolationException(ConstraintViolationException e) {
-        return ResponseEntity.badRequest().body(ErrorResponse.of(e.getLocalizedMessage()));
-    }
-
-    @ExceptionHandler(BindException.class)
-    public ResponseEntity<ErrorResponse> handleBindException(BindException e) {
-        return ResponseEntity.badRequest().body(ErrorResponse.of(Objects.requireNonNull(e.getFieldError()).getDefaultMessage()));
-    }
-
-    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
-    public ResponseEntity<ErrorResponse> handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
-        return ResponseEntity.status(405).body(ErrorResponse.of(e.getLocalizedMessage()));
-    }
-
-    @ExceptionHandler(SeecDataException.class)
-    public ResponseEntity<ErrorResponse> handleHelperException(SeecDataException e) {
-        return ResponseEntity.status(e.getType().getStatus()).body(ErrorResponse.of(e.getMsg()));
-    }
-
-    @ExceptionHandler(Exception.class)
-    public ResponseEntity<ErrorResponse> handleException(Exception e) {
-        log.error(e.getLocalizedMessage(), e);
-        return ResponseEntity.status(HttpStatus.INTERNAL_SERVER_ERROR).body(ErrorResponse.of("系统异常,请重试"));
-    }
-}

+ 0 - 13
seec-data-server/src/main/java/cn/seecoder/data/server/controller/response/ErrorResponse.java

@@ -1,13 +0,0 @@
-package cn.seecoder.data.server.controller.response;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-/**
- * @author cst
- */
-@Data
-@AllArgsConstructor(staticName = "of")
-public class ErrorResponse {
-    private String msg;
-}

+ 0 - 16
seec-data-server/src/main/java/cn/seecoder/data/server/exception/ExceptionType.java

@@ -1,16 +0,0 @@
-package cn.seecoder.data.server.exception;
-
-import lombok.Getter;
-import org.springframework.http.HttpStatus;
-
-@Getter
-public enum ExceptionType {
-    // http code
-    PARAM_ERROR(HttpStatus.BAD_REQUEST), UNAUTHORIZED(HttpStatus.UNAUTHORIZED), FORBIDDEN(HttpStatus.FORBIDDEN), NOT_FOUND(HttpStatus.NOT_FOUND), CONFLICT(HttpStatus.CONFLICT), ERROR(HttpStatus.INTERNAL_SERVER_ERROR);
-
-    private final HttpStatus status;
-
-    ExceptionType(HttpStatus status) {
-        this.status = status;
-    }
-}

+ 0 - 17
seec-data-server/src/main/java/cn/seecoder/data/server/exception/SeecDataException.java

@@ -1,17 +0,0 @@
-package cn.seecoder.data.server.exception;
-
-
-import lombok.AllArgsConstructor;
-import lombok.Getter;
-
-@Getter
-@AllArgsConstructor(staticName = "of")
-public class SeecDataException extends RuntimeException{
-    private final ExceptionType type;
-    private final String msg;
-
-    @Override
-    public String getMessage() {
-        return msg;
-    }
-}

+ 5 - 1
seec-data-server/src/main/java/cn/seecoder/data/server/utils/enums/ErrorCodeEnum.java

@@ -15,7 +15,11 @@ public enum ErrorCodeEnum {
 
     SERVICE_ERROR_C0001("C0001", "无本次考试记录"),
     SERVICE_ERROR_C0002("C0002", "数据抽取源错误"),
-    SERVICE_ERROR_C0003("C0003", "数据抽取源无数据");
+    SERVICE_ERROR_C0003("C0003", "数据抽取源无数据"),
+    SERVICE_ERROR_C0004("C0004", "请求参数不合法"),
+    SERVICE_ERROR_C0005("C0005", "请求参数不匹配"),
+    SERVICE_ERROR_C0006("C0006", "请求方法不支持");
+
 
 
     private final String code;

+ 27 - 11
seec-data-server/src/main/java/cn/seecoder/data/server/utils/exception/GlobalExceptionHandler.java

@@ -4,31 +4,47 @@ import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
 import cn.seecoder.data.server.vo.Result;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
+import org.springframework.web.HttpRequestMethodNotSupportedException;
+import org.springframework.web.bind.MethodArgumentNotValidException;
 import org.springframework.web.bind.annotation.ExceptionHandler;
 import org.springframework.web.bind.annotation.RestControllerAdvice;
 
-import cn.seecoder.data.server.utils.enums.ErrorCodeEnum;
+import org.springframework.web.method.annotation.MethodArgumentTypeMismatchException;
+
 
 @RestControllerAdvice
 public class GlobalExceptionHandler {
     private Logger logger = LoggerFactory.getLogger(getClass());
 
-    /**
-     * 处理 Exception 异常
-     * @param e 异常
-     * @return 处理结果
-     */
+    //请求参数不合法
+    @ExceptionHandler(MethodArgumentNotValidException.class)
+    public Result<Object> handleMethodArgumentNotValidatedException(MethodArgumentNotValidException e) {
+        logger.error(e.getMessage(), e);
+        return Result.buildFailure(ErrorCodeEnum.SERVICE_ERROR_C0004);
+    }
+
+    //请求参数不匹配
+    @ExceptionHandler(MethodArgumentTypeMismatchException.class)
+    public Result<Object> handleMethodArgumentTypeMismatchException(MethodArgumentTypeMismatchException e) {
+        logger.error(e.getMessage(), e);
+        return Result.buildFailure(ErrorCodeEnum.SERVICE_ERROR_C0005);
+    }
+
+    //请求方法不支持
+    @ExceptionHandler(HttpRequestMethodNotSupportedException.class)
+    public Result<Object> handleHttpRequestMethodNotSupportedException(HttpRequestMethodNotSupportedException e) {
+        logger.error(e.getMessage(), e);
+        return Result.buildFailure(ErrorCodeEnum.SERVICE_ERROR_C0006);
+    }
+
+    //处理通用异常
     @ExceptionHandler(Exception.class)
     public Result<Object> handlerException(Exception e) {
         logger.error(e.getMessage(), e);
         return Result.buildFailure(ErrorCodeEnum.SYSTEM_ERROR_B0001);
     }
 
-    /**
-     * 处理自定义异常
-     * @param e 异常
-     * @return 处理结果
-     */
+    //处理自定义异常
     @ExceptionHandler(GlobalException.class)
     public Result<Object> handlerGlobalException(GlobalException e) {
         logger.error(e.getMessage(), e);