From d8a687741273d121586b83745280c57f7e9d3297 Mon Sep 17 00:00:00 2001
From: XiaoRuby <3114200645@qq.com>
Date: 星期一, 07 八月 2023 17:51:28 +0800
Subject: [PATCH] Merge branch 'master' of https://gitee.com/yuanchu_code/lims-management-system

---
 framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java |  215 +++++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 215 insertions(+), 0 deletions(-)

diff --git a/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java b/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
new file mode 100644
index 0000000..e94b324
--- /dev/null
+++ b/framework/src/main/java/com/yuanchu/limslaboratory/handler/GlobalExceptionHandler.java
@@ -0,0 +1,215 @@
+package com.yuanchu.limslaboratory.handler;
+
+import com.yuanchu.limslaboratory.exception.MyFileException;
+import com.yuanchu.limslaboratory.utils.MyUtil;
+import com.yuanchu.limslaboratory.vo.Result;
+import lombok.extern.slf4j.Slf4j;
+import org.apache.tomcat.util.http.fileupload.impl.FileSizeLimitExceededException;
+import org.apache.tomcat.util.http.fileupload.impl.SizeLimitExceededException;
+import org.springframework.beans.ConversionNotSupportedException;
+import org.springframework.beans.TypeMismatchException;
+import org.springframework.beans.factory.NoSuchBeanDefinitionException;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.dao.DuplicateKeyException;
+import org.springframework.http.converter.HttpMessageNotReadableException;
+import org.springframework.http.converter.HttpMessageNotWritableException;
+import org.springframework.jdbc.BadSqlGrammarException;
+import org.springframework.validation.ObjectError;
+import org.springframework.web.bind.MethodArgumentNotValidException;
+import org.springframework.web.bind.annotation.ExceptionHandler;
+import org.springframework.web.bind.annotation.RestControllerAdvice;
+import org.springframework.web.multipart.MultipartException;
+
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.net.BindException;
+import java.sql.SQLException;
+import java.util.List;
+import java.util.stream.Collectors;
+
+
+@Slf4j
+@RestControllerAdvice
+public class GlobalExceptionHandler {
+
+    @Value("${spring.servlet.multipart.max-file-size}")
+    private String maxFileSize;
+
+    @Value("${spring.servlet.multipart.max-request-size}")
+    private String maxRequestSize;
+
+    @ExceptionHandler(SQLException.class)
+    public Result<?> handlerSQLException(SQLException e)
+    {
+        log.error(e.getMessage().toLowerCase(), e);
+        return Result.fail("鏁版嵁鎿嶄綔澶辫触锛佽鑱旂郴绠$悊鍛�");
+    }
+
+    /**
+     * 鍞竴鍊煎湪鏁版嵁搴撲腑閲嶅
+     * Duplicate entry ' ' for key ' '
+     * @param e锛氶噸澶嶉敭寮傚父
+     * @return 199
+     */
+    @ExceptionHandler
+    public Result<?> DuplicateKeyException(DuplicateKeyException e) {
+        log.error(String.valueOf(e));
+        String message = e.getCause().getMessage();
+        String[] split = message.split("'");
+        return Result.fail("閲嶅娣诲姞锛氥��" + split[1] + "銆戞搷浣滃け璐ワ紒");
+    }
+
+    @ExceptionHandler
+    public Result<?> NullPointerException(NullPointerException e){
+        e.printStackTrace();
+        return Result.fail("閮ㄥ垎鍙傛暟涓虹┖锛岃妫�鏌ワ紒");
+    }
+
+    /** 杩愯鏃跺紓甯� */
+    @ExceptionHandler(RuntimeException.class)
+    public Result<?> runtimeExceptionHandler(RuntimeException e) {
+        e.printStackTrace();
+        return Result.fail("杩愯鏃跺紓甯�");
+    }
+
+    /** 绫诲瀷杞崲寮傚父 */
+    @ExceptionHandler(ClassCastException.class)
+    public Result<?> classCastExceptionHandler(ClassCastException e) {
+        e.printStackTrace();
+        return Result.fail("绫诲瀷杞崲寮傚父");
+    }
+    /** 鏂囦欢鏈壘鍒板紓甯� */
+    @ExceptionHandler(FileNotFoundException.class)
+    public Result<?> FileNotFoundException(FileNotFoundException e) {
+        e.printStackTrace();
+        return Result.fail("鏂囦欢鏈壘鍒板紓甯�");
+    }
+    /** 鏁板瓧鏍煎紡寮傚父 */
+    @ExceptionHandler(NumberFormatException.class)
+    public Result<?> NumberFormatException(NumberFormatException e) {
+        e.printStackTrace();
+        return Result.fail("鏁板瓧鏍煎紡寮傚父");
+    }
+    /** 瀹夊叏寮傚父 */
+    @ExceptionHandler(SecurityException.class)
+    public Result<?> SecurityException(SecurityException e) {
+        e.printStackTrace();
+        return Result.fail("瀹夊叏寮傚父");
+    }
+
+    /** 绫诲瀷涓嶅瓨鍦ㄥ紓甯� */
+    @ExceptionHandler(TypeNotPresentException.class)
+    public Result<?> TypeNotPresentException(TypeNotPresentException e) {
+        e.printStackTrace();
+        return Result.fail("绫诲瀷涓嶅瓨鍦ㄥ紓甯�");
+    }
+
+    /** IO寮傚父 */
+    @ExceptionHandler(IOException.class)
+    public Result<?> iOExceptionHandler(IOException e) {
+        e.printStackTrace();
+        return Result.fail("IO寮傚父");
+    }
+
+    /** 鏈煡鏂规硶寮傚父 */
+    @ExceptionHandler(NoSuchMethodException.class)
+    public Result<?> noSuchMethodExceptionHandler(NoSuchMethodException e) {
+        e.printStackTrace();
+        return Result.fail("鏈煡鏂规硶寮傚父");
+    }
+
+    /** 鏁扮粍瓒婄晫寮傚父 */
+    @ExceptionHandler(IndexOutOfBoundsException.class)
+    public Result<?> indexOutOfBoundsExceptionHandler(IndexOutOfBoundsException e) {
+        e.printStackTrace();
+        return Result.fail("鏁扮粍瓒婄晫寮傚父");
+    }
+    /** sql璇硶閿欒寮傚父 */
+    @ExceptionHandler(BadSqlGrammarException.class)
+    public Result<?> BadSqlGrammarException(BadSqlGrammarException e) {
+        e.printStackTrace();
+        return Result.fail("sql璇硶閿欒寮傚父");
+    }
+
+    /** 鏃犳硶娉ㄥ叆bean寮傚父 */
+    @ExceptionHandler(NoSuchBeanDefinitionException.class)
+    public Result<?> NoSuchBeanDefinitionException(NoSuchBeanDefinitionException e) {
+        e.printStackTrace();
+        return Result.fail("鏃犳硶娉ㄥ叆bean");
+    }
+
+    /** Http娑堟伅涓嶅彲璇诲紓甯� */
+    @ExceptionHandler({HttpMessageNotReadableException.class})
+    public Result<?> requestNotReadable(HttpMessageNotReadableException e) {
+        e.printStackTrace();
+        return Result.fail("Http娑堟伅涓嶅彲璇�");
+    }
+
+    /** 400閿欒 */
+    @ExceptionHandler({TypeMismatchException.class})
+    public Result<?> requestTypeMismatch(TypeMismatchException e) {
+        e.printStackTrace();
+        return Result.fail("鏈嶅姟鍣ㄥ紓甯�");
+    }
+
+    /** 500閿欒 */
+    @ExceptionHandler({ConversionNotSupportedException.class, HttpMessageNotWritableException.class})
+    public Result<?> server500(RuntimeException e) {
+        e.printStackTrace();
+        return Result.fail("鏈嶅姟鍣ㄥ紓甯�");
+    }
+
+    /** 鏍堟孩鍑� */
+    @ExceptionHandler({StackOverflowError.class})
+    public Result<?> requestStackOverflow(StackOverflowError e) {
+        e.printStackTrace();
+        return Result.fail("鏍堟孩鍑哄紓甯�");
+    }
+
+    /** 闄ゆ暟涓嶈兘涓�0 */
+    @ExceptionHandler({ArithmeticException.class})
+    public Result<?> arithmeticException(ArithmeticException e) {
+        e.printStackTrace();
+        return Result.fail("闄ゆ暟涓嶈兘涓�0寮傚父");
+    }
+
+    /**
+     *鏂囦欢杩囧ぇ鎶ラ敊鎻愮ず
+     */
+    @ExceptionHandler({MultipartException.class})
+    public Result<?> fileUploadExceptionHandler(MultipartException  e) {
+        String msg;
+        Throwable rootCause = e.getRootCause();
+        if (rootCause instanceof FileSizeLimitExceededException) {
+            msg="涓婁紶鏂囦欢杩囧ぇ銆愬崟涓枃浠跺ぇ灏忎笉寰楄秴杩�" + maxFileSize + "銆�";
+        }else if(rootCause instanceof SizeLimitExceededException){
+            msg="涓婁紶鏂囦欢杩囧ぇ銆愭�讳笂浼犲ぇ灏忎笉寰楄秴杩�" + maxRequestSize + "銆�";
+        }else {
+            msg="鏂囦欢涓婁紶澶辫触銆愭湇鍔″櫒寮傚父銆�";
+        }
+        return Result.fail(msg);
+    }
+
+    /** 鏂囦欢鍚庣紑鍚嶄笉閫氳繃杩斿洖鎻愮ず */
+    @ExceptionHandler({MyFileException.class})
+    public Result<?> myFileException(Exception e) {
+        return Result.fail("鎶辨瓑涓嶆敮鎸併��" + e.getMessage() +"銆戝悗缂�鐨勬枃浠讹紒");
+    }
+
+    /**
+     * 鍙傛暟妫�楠�
+     */
+    @ExceptionHandler({MethodArgumentNotValidException.class})
+    public Result<?> methodArgumentNotValidException(MethodArgumentNotValidException e) {
+        List<ObjectError> allErrors = e.getBindingResult().getAllErrors();
+        String message = allErrors.stream().map(s -> s.getDefaultMessage()).collect(Collectors.joining(";"));
+        return Result.fail(message);
+    }
+
+    /** 鍏朵粬閿欒 */
+    @ExceptionHandler({Exception.class})
+    public Result<?> exception(Exception e) {
+        e.printStackTrace();
+        return Result.fail("缃戠粶杩炴帴澶辫触锛岃閫�鍑哄悗鍐嶈瘯");
+    }
+}

--
Gitblit v1.9.3