From 08432353fe88fbd7043c59ebdbc0961fa9a7f628 Mon Sep 17 00:00:00 2001 From: ZhouXY108 Date: Wed, 1 Oct 2025 22:56:56 +0800 Subject: [PATCH] =?UTF-8?q?refactor(exception)!:=20=E4=BF=AE=E6=94=B9=20`S?= =?UTF-8?q?ysException`=20=E5=92=8C=20`BizException`?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 `SysException` 和 `BizException` 的构造方法设为 `protected`,供子类的构造方法调用 - 创建对应的工厂方法用于直接创建 `SysException` 和 `BizException` 实例 --- .../exception/business/BizException.java | 33 ++++++++++++------ .../system/NoAvailableMacFoundException.java | 2 +- .../exception/system/SysException.java | 34 +++++++++++++------ .../CustomUnifiedResponseFactoryTests.java | 2 +- .../model/dto/UnifiedResponseTests.java | 2 +- 5 files changed, 48 insertions(+), 25 deletions(-) diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/BizException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/BizException.java index 666fa04..361edec 100644 --- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/BizException.java +++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/business/BizException.java @@ -33,21 +33,13 @@ public class BizException extends RuntimeException { private static final String DEFAULT_MSG = "业务异常"; - /** - * 使用默认 message 构造新的业务异常。 - * {@code cause} 未初始化,后面可能会通过调用 {@link #initCause} 进行初始化。 - */ - public BizException() { - super(DEFAULT_MSG); - } - /** * 使用指定的 {@code message} 构造新的业务异常。 * {@code cause} 未初始化,后面可能会通过调用 {@link #initCause} 进行初始化。 * * @param message 异常信息 */ - public BizException(String message) { + protected BizException(String message) { super(message); } @@ -57,7 +49,7 @@ public class BizException extends RuntimeException { * * @param cause 包装的异常 */ - public BizException(Throwable cause) { + protected BizException(Throwable cause) { super(cause); } @@ -67,8 +59,27 @@ public class BizException extends RuntimeException { * @param message 异常信息 * @param cause 包装的异常 */ - public BizException(String message, Throwable cause) { + protected BizException(String message, Throwable cause) { super(message, cause); } + public static BizException of() { + return new BizException(DEFAULT_MSG); + } + + public static BizException of(String message) { + return new BizException(message); + } + + public static BizException of(String errorMessageFormat, Object... errorMessageArgs) { + return new BizException(String.format(errorMessageFormat, errorMessageArgs)); + } + + public static BizException of(Throwable cause) { + return new BizException(cause); + } + + public static BizException of(String message, Throwable cause) { + return new BizException(message, cause); + } } diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/NoAvailableMacFoundException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/NoAvailableMacFoundException.java index af45267..d3a74c0 100644 --- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/NoAvailableMacFoundException.java +++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/NoAvailableMacFoundException.java @@ -33,7 +33,7 @@ public class NoAvailableMacFoundException extends SysException { * {@code cause} 未初始化,后面可能会通过调用 {@link #initCause} 进行初始化。 */ public NoAvailableMacFoundException() { - super(); + super("无法找到可访问的 Mac 地址"); } /** diff --git a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/SysException.java b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/SysException.java index 9c8ee6b..322b26a 100644 --- a/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/SysException.java +++ b/plusone-commons/src/main/java/xyz/zhouxy/plusone/commons/exception/system/SysException.java @@ -30,21 +30,13 @@ public class SysException extends RuntimeException { private static final String DEFAULT_MSG = "系统异常"; - /** - * 使用默认 message 构造新的系统异常。 - * {@code cause} 未初始化,后面可能会通过调用 {@link #initCause} 进行初始化。 - */ - public SysException() { - super(DEFAULT_MSG); - } - /** * 使用指定的 {@code message} 构造新的系统异常。 * {@code cause} 未初始化,后面可能会通过调用 {@link #initCause} 进行初始化。 * * @param message 异常信息 */ - public SysException(String message) { + protected SysException(String message) { super(message); } @@ -54,7 +46,7 @@ public class SysException extends RuntimeException { * * @param cause 包装的异常 */ - public SysException(Throwable cause) { + protected SysException(Throwable cause) { super(cause); } @@ -64,7 +56,27 @@ public class SysException extends RuntimeException { * @param message 异常信息 * @param cause 包装的异常 */ - public SysException(String message, Throwable cause) { + protected SysException(String message, Throwable cause) { super(message, cause); } + + public static SysException of() { + return new SysException(DEFAULT_MSG); + } + + public static SysException of(String message) { + return new SysException(message); + } + + public static SysException of(String errorMessageFormat, Object... errorMessageArgs) { + return new SysException(String.format(errorMessageFormat, errorMessageArgs)); + } + + public static SysException of(Throwable cause) { + return new SysException(cause); + } + + public static SysException of(String message, Throwable cause) { + return new SysException(message, cause); + } } diff --git a/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/CustomUnifiedResponseFactoryTests.java b/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/CustomUnifiedResponseFactoryTests.java index 6f5dcc1..65c7a47 100644 --- a/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/CustomUnifiedResponseFactoryTests.java +++ b/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/CustomUnifiedResponseFactoryTests.java @@ -381,7 +381,7 @@ class CustomUnifiedResponseFactoryTests { assertThrows(NullPointerException.class, () -> CustomUnifiedResponses.error(nullStatus, "查询失败", user)); // Throwable - BizException bizException = new BizException("业务异常"); + BizException bizException = BizException.of("业务异常"); assertThrows(NullPointerException.class, () -> CustomUnifiedResponses.error(nullStatus, bizException)); assertThrows(NullPointerException.class, () -> CustomUnifiedResponses.error(nullStatus, (Throwable) null)); } diff --git a/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java b/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java index d3e60d6..5d30569 100644 --- a/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java +++ b/plusone-commons/src/test/java/xyz/zhouxy/plusone/commons/model/dto/UnifiedResponseTests.java @@ -379,7 +379,7 @@ class UnifiedResponseTests { assertThrows(NullPointerException.class, () -> UnifiedResponses.error(nullStatus, "查询失败", user)); // Throwable - BizException bizException = new BizException("业务异常"); + BizException bizException = BizException.of("业务异常"); assertThrows(NullPointerException.class, () -> UnifiedResponses.error(nullStatus, bizException)); assertThrows(NullPointerException.class, () -> UnifiedResponses.error(nullStatus, (Throwable) null)); }