From 0bf868d3cdf9226e178c076d3b588ed5207409a0 Mon Sep 17 00:00:00 2001
From: kongzy <kongzy>
Date: 星期五, 24 十一月 2023 17:51:40 +0800
Subject: [PATCH] merge

---
 assess-framework/src/main/java/com/gkhy/assess/framework/exception/GlobalExceptionHandler.java |  110 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 110 insertions(+), 0 deletions(-)

diff --git a/assess-framework/src/main/java/com/gkhy/assess/framework/exception/GlobalExceptionHandler.java b/assess-framework/src/main/java/com/gkhy/assess/framework/exception/GlobalExceptionHandler.java
new file mode 100644
index 0000000..d4b5872
--- /dev/null
+++ b/assess-framework/src/main/java/com/gkhy/assess/framework/exception/GlobalExceptionHandler.java
@@ -0,0 +1,110 @@
+package com.gkhy.assess.framework.exception;
+
+import com.gkhy.assess.common.api.CommonResult;
+import com.gkhy.assess.common.exception.ApiException;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.validation.BindException;
+import org.springframework.validation.BindingResult;
+import org.springframework.validation.FieldError;
+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.ResponseBody;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+
+import javax.servlet.http.HttpServletRequest;
+import java.sql.SQLException;
+
+/**
+ * 全局异常处理类
+ */
+@RestControllerAdvice
+@Slf4j
+public class GlobalExceptionHandler {
+    @Autowired
+    HttpServletRequest request;
+
+    @ExceptionHandler(value = ApiException.class)
+    public CommonResult handle(ApiException e){
+        writeExceptionLogFile(e);
+        if(e.getErrorCode()!=null){
+            return CommonResult.failed(e.getErrorCode());
+        }
+        return CommonResult.failed(e.getMessage());
+    }
+
+
+
+    @ExceptionHandler(value = MethodArgumentNotValidException.class)
+    public CommonResult handleValidException(MethodArgumentNotValidException e) {
+        BindingResult bindingResult = e.getBindingResult();
+        String message = null;
+        if (bindingResult.hasErrors()) {
+            FieldError fieldError = bindingResult.getFieldError();
+            if (fieldError != null) {
+                message = fieldError.getField()+fieldError.getDefaultMessage();
+            }
+        }
+        writeExceptionLogFile(e);
+        return CommonResult.validateFailed(message);
+    }
+
+    @ExceptionHandler(value = BindException.class)
+    public CommonResult handleValidException(BindException e) {
+        BindingResult bindingResult = e.getBindingResult();
+        String message = null;
+        if (bindingResult.hasErrors()) {
+            FieldError fieldError = bindingResult.getFieldError();
+            if (fieldError != null) {
+                message = fieldError.getField()+fieldError.getDefaultMessage();
+            }
+        }
+        writeExceptionLogFile(e);
+        return CommonResult.validateFailed(message);
+    }
+
+
+    @ExceptionHandler(SQLException.class)
+    public CommonResult sqlExceptionHandler(Exception ex) {
+        writeExceptionLogFile(ex);
+        return CommonResult.failed( "执行sql异常");
+    }
+
+
+    /**
+     * 拦截未知的运行时异常
+     */
+    @ExceptionHandler(RuntimeException.class)
+    public CommonResult handleRuntimeException(RuntimeException ex, HttpServletRequest request)
+    {
+        writeExceptionLogFile(ex);
+        return CommonResult.failed(ex.getMessage());
+    }
+
+
+    /**
+     * 500 其他服务器异常
+     */
+    @ExceptionHandler(Exception.class)
+    public CommonResult otherExceptionHandler(Exception ex) {
+        String message = !StringUtils.isEmpty(ex.getMessage()) ? ex.getMessage() : ex.toString();
+        if(StringUtils.isNotBlank(message)&&message.contains("java.sql")){
+            message="执行sql异常";
+        }
+        writeExceptionLogFile(ex);
+        return CommonResult.failed(message);
+    }
+
+    private void writeExceptionLogFile(Exception ex) {
+        String url="";
+        if (request!=null) {
+            url=request.getRequestURI();
+        }
+        log.error("error={}",ex);
+        log.error(ex.getMessage()+",url={}",url);
+    }
+}

--
Gitblit v1.9.2