11package com .github .cadecode .uniboot .common .core .exception ;
22
3+ import cn .hutool .core .util .StrUtil ;
34import com .github .cadecode .uniboot .common .core .enums .ApiErrorCode ;
45import lombok .Getter ;
56
1213 * @date 2022/5/8
1314 */
1415@ Getter
15- public class ApiException extends RuntimeException {
16+ public class ApiException extends BaseException {
1617
1718 /**
1819 * 错误信息码
@@ -24,36 +25,53 @@ public class ApiException extends RuntimeException {
2425 */
2526 private final String moreInfo ;
2627
28+ /**
29+ * 构造方法
30+ *
31+ * @param errorCode 错误信息码
32+ * @param throwable cause
33+ * @param moreInfo 更多异常信息
34+ * @param params 字符串模板参数
35+ */
36+ public ApiException (ApiErrorCode errorCode , Throwable throwable , String moreInfo , Object ... params ) {
37+ super (geneErrorMessage (errorCode , moreInfo , params ), throwable );
38+ this .errorCode = errorCode ;
39+ this .moreInfo = StrUtil .format (moreInfo , params );
40+ }
41+
2742 /**
2843 * 抛出未知异常
2944 *
3045 * @param moreInfo 更多异常信息
46+ * @param params 字符串模板参数
3147 * @return ApiException
3248 */
33- public static ApiException of (String moreInfo ) {
34- return of (ApiErrorCode .UNKNOWN , moreInfo );
49+ public static ApiException of (String moreInfo , Object ... params ) {
50+ return of (ApiErrorCode .UNKNOWN , moreInfo , params );
3551 }
3652
3753 /**
3854 * 抛出未知异常
3955 *
4056 * @param throwable cause
4157 * @param moreInfo 更多异常信息
58+ * @param params 字符串模板参数
4259 * @return ApiException
4360 */
44- public static ApiException of (Throwable throwable , String moreInfo ) {
45- return of (ApiErrorCode .UNKNOWN , throwable , moreInfo );
61+ public static ApiException of (Throwable throwable , String moreInfo , Object ... params ) {
62+ return of (ApiErrorCode .UNKNOWN , throwable , moreInfo , params );
4663 }
4764
4865 /**
4966 * 根据 ApiErrorCode 抛出异常
5067 *
5168 * @param errorCode 错误信息码
5269 * @param moreInfo 更多异常信息
70+ * @param params 字符串模板参数
5371 * @return ApiException
5472 */
55- public static ApiException of (ApiErrorCode errorCode , String moreInfo ) {
56- return of (errorCode , null , moreInfo );
73+ public static ApiException of (ApiErrorCode errorCode , String moreInfo , Object ... params ) {
74+ return of (errorCode , null , moreInfo , params );
5775 }
5876
5977 /**
@@ -73,23 +91,13 @@ public static ApiException of(ApiErrorCode errorCode, Throwable throwable) {
7391 * @param errorCode 错误信息码
7492 * @param throwable cause
7593 * @param moreInfo 更多异常信息
94+ * @param params 字符串模板参数
7695 * @return ApiException
7796 */
78- public static ApiException of (ApiErrorCode errorCode , Throwable throwable , String moreInfo ) {
79- return new ApiException (errorCode , throwable , moreInfo );
80- }
81-
82- /**
83- * 私有构造
84- *
85- * @param errorCode 错误信息码
86- * @param throwable cause
87- * @param moreInfo 更多异常信息
88- */
89- private ApiException (ApiErrorCode errorCode , Throwable throwable , String moreInfo ) {
90- super (generateMessage (errorCode , moreInfo ), throwable );
91- this .errorCode = errorCode ;
92- this .moreInfo = moreInfo ;
97+ public static ApiException of (ApiErrorCode errorCode , Throwable throwable , String moreInfo , Object ... params ) {
98+ // 这里直接调用 StrUtil.format 得到 moreInfo
99+ // 避免在构造方法中重复 format 解析字符串模板
100+ return new ApiException (errorCode , throwable , StrUtil .format (moreInfo , params ));
93101 }
94102
95103 /**
@@ -99,15 +107,15 @@ private ApiException(ApiErrorCode errorCode, Throwable throwable, String moreInf
99107 * @param moreInfo 更多异常信息
100108 * @return 完整异常信息
101109 */
102- private static String generateMessage (ApiErrorCode errorCode , String moreInfo ) {
110+ private static String geneErrorMessage (ApiErrorCode errorCode , String moreInfo , Object ... params ) {
103111 String message = "" ;
104- // 拼接 [错误码- 错误信息]
112+ // 拼接 [错误码: 错误信息]
105113 if (Objects .nonNull (errorCode )) {
106- message += "[" + errorCode .getCode () + "- " + errorCode .getMessage () + "]" ;
114+ message += "[" + errorCode .getCode () + ": " + errorCode .getMessage () + "]" ;
107115 }
108116 // 拼接更多异常信息
109117 if (Objects .nonNull (moreInfo )) {
110- message += moreInfo ;
118+ message += StrUtil . format ( moreInfo , params ) ;
111119 }
112120 return message ;
113121 }
0 commit comments