From f4e3684a3f5838844b776fa88cead645e06440dd Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Mon, 9 Jun 2025 16:24:06 +0800 Subject: [PATCH] =?UTF-8?q?refactor(exception)!:=20=E9=87=8D=E6=9E=84?= =?UTF-8?q?=E5=A4=9A=E7=B1=BB=E5=9E=8B=E5=BC=82=E5=B8=B8=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 在 IMultiTypesException 接口中添加泛型参数 TCode,用于指定异常类型代码的类型 - 在 IExceptionType 接口中添加 getDescription 方法,用于获取异常类型的描述信息 --- README.md | 4 ++-- .../exception/IMultiTypesException.java | 21 +++++++++++++------ .../exception/ParsingFailureException.java | 4 ++-- .../business/InvalidInputException.java | 4 ++-- .../commons/exception/package-info.java | 4 ++-- 5 files changed, 23 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 4fc9b81..7d004ab 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ System.out.println(result); // Output: Return string ```java public final class LoginException extends RuntimeException - implements IMultiTypesException { + implements IMultiTypesException { private final Type type; private LoginException(@Nonnull Type type, @Nonnull String message) { super(message); @@ -103,7 +103,7 @@ public final class LoginException // ... - public enum Type implements IExceptionType { + public enum Type implements IExceptionType { DEFAULT("00", "当前会话未登录"), NOT_TOKEN("10", "未提供token"), INVALID_TOKEN("20", "token无效"), diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java index 7050aeb..b109ecd 100644 --- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java +++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/IMultiTypesException.java @@ -15,8 +15,11 @@ */ package xyz.zhouxy.plusone.commons.exception; +import java.io.Serializable; + import javax.annotation.Nonnull; +import xyz.zhouxy.plusone.commons.annotation.Virtual; import xyz.zhouxy.plusone.commons.base.IWithCode; /** @@ -35,7 +38,7 @@ import xyz.zhouxy.plusone.commons.base.IWithCode; *
  * public final class LoginException
  *         extends RuntimeException
- *         implements IMultiTypesException<LoginException, LoginException.Type> {
+ *         implements IMultiTypesException<LoginException, String, LoginException.Type> {
  *     private final Type type;
  *     private LoginException(@Nonnull Type type, @Nonnull String message) {
  *         super(message);
@@ -61,7 +64,7 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
  *
  *     // ...
  *
- *     public enum Type implements IExceptionType<LoginException> {
+ *     public enum Type implements IExceptionType<LoginException, String> {
  *         DEFAULT("00", "当前会话未登录"),
  *         NOT_TOKEN("10", "未提供token"),
  *         INVALID_TOKEN("20", "token无效"),
@@ -125,7 +128,8 @@ import xyz.zhouxy.plusone.commons.base.IWithCode;
  */
 public interface IMultiTypesException<
         X extends Exception,
-        T extends IMultiTypesException.IExceptionType> {
+        TCode extends Serializable,
+        T extends IMultiTypesException.IExceptionType> {
 
     /**
      * 异常类型
@@ -140,20 +144,25 @@ public interface IMultiTypesException<
      *
      * @return 异常类型编码
      */
-    default @Nonnull String getTypeCode() {
+    default @Nonnull TCode getTypeCode() {
         return getType().getCode();
     }
 
     /**
      * 异常类型
      */
-    public static interface IExceptionType
-            extends IWithCode, IExceptionFactory {
+    public static interface IExceptionType
+            extends IWithCode, IExceptionFactory {
 
         /**
          * 默认异常信息
          */
         String getDefaultMessage();
 
+        @Virtual
+        default String getDescription() {
+            return getDefaultMessage();
+        }
+
     }
 }
diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
index a60d3d8..5729e3c 100644
--- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
+++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/ParsingFailureException.java
@@ -39,7 +39,7 @@ import xyz.zhouxy.plusone.commons.exception.IMultiTypesException.IExceptionType;
  */
 public final class ParsingFailureException
         extends RuntimeException
-        implements IMultiTypesException {
+        implements IMultiTypesException {
 
     private final Type type;
 
@@ -170,7 +170,7 @@ public final class ParsingFailureException
     /** XML 解析失败 */
     public static final Type XML_PARSING_FAILURE = Type.XML_PARSING_FAILURE;
 
-    public enum Type implements IExceptionType {
+    public enum Type implements IExceptionType {
         DEFAULT("00", "解析失败"),
         NUMBER_PARSING_FAILURE("10", "数字转换失败"),
         DATE_TIME_PARSING_FAILURE("20", "时间解析失败"),
diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
index 1810b07..e97a3ea 100644
--- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
+++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/InvalidInputException.java
@@ -35,7 +35,7 @@ import xyz.zhouxy.plusone.commons.exception.IMultiTypesException;
  */
 public final class InvalidInputException
         extends RequestParamsException
-        implements IMultiTypesException {
+        implements IMultiTypesException {
 
     private final Type type;
 
@@ -108,7 +108,7 @@ public final class InvalidInputException
         return this.type;
     }
 
-    public enum Type implements IExceptionType {
+    public enum Type implements IExceptionType {
         DEFAULT("00", "用户输入内容非法"),
         CONTAINS_ILLEGAL_AND_MALICIOUS_LINKS("01", "包含非法恶意跳转链接"),
         CONTAINS_ILLEGAL_WORDS("02", "包含违禁敏感词"),
diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java
index 0595977..8511ff8 100644
--- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java
+++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/package-info.java
@@ -31,7 +31,7 @@
  * 
  * public final class LoginException
  *         extends RuntimeException
- *         implements IMultiTypesException<LoginException, LoginException.Type> {
+ *         implements IMultiTypesException<LoginException, String, LoginException.Type> {
  *     private final Type type;
  *     private LoginException(@Nonnull Type type, @Nonnull String message) {
  *         super(message);
@@ -57,7 +57,7 @@
  *
  *     // ...
  *
- *     public enum Type implements IExceptionType<LoginException> {
+ *     public enum Type implements IExceptionType<LoginException, String> {
  *         DEFAULT("00", "当前会话未登录"),
  *         NOT_TOKEN("10", "未提供token"),
  *         INVALID_TOKEN("20", "token无效"),