Commit 121b395
Preview
Give feedback
poboll
poboll
committed
30 minutes ago
feat: Refactor error handling module with strategy pattern for customizable team-specific error standards
- Introduced the interface to enable custom error enumeration implementations.
- Refactored and to enhance extensibility.
- Optimized methods to adapt to the new error handling structure.
- Updated the README with examples and guidelines for defining and using custom error codes.
main
1 parent
4f4f6d5
commit
121b395
File tree
Filter files...
README.md
README_CN.md
pom.xml
src/main/java/com/caiths/swiftweb
common
BaseResponse.java
Error.java
ErrorCode.java
ResultUtils.java
exception
BusinessException.java
GlobalExceptionHandler.java
9 files changed
+185
-26
lines changed
Search within code
+38
Original file line number Diff line number Diff line change
@@ -69,6 +69,44 @@ spring:
- Refresh the dependencies.
Custom Error Codes 👌
-
By implementing the
Error interface
, you can define your own team's error handling specifications!
Example:javapublic enum ErrorCode implements Error { /** * 状态码 */ private final int code; /** * 错误信息 */ private final String message; /** * 成功 */ SUCCESS(0, "ok"), /** * 请求参数错误 */ PARAMS_ERROR(40000, "请求参数错误"); @Override public int getCode() { return code; } @Override public String getMessage() { return message; } }
Why Choose SwiftWeb? 😎
SwiftWeb simplifies the web development process compared to traditional methods by integrating essential features such as API documentation, error code management, and exception handling right out of the box.
README_CN.md
+37
Original file line number Diff line number Diff line change
@@ -69,6 +69,43 @@
- 刷新依赖
自定义错误码👌
- 通过实现
Error接口
即的可定义属于自己的团队的错误处理规范!!!
示例:
java
public enum ErrorCode implements Error {
/**
* 状态码
*/
private final int code;
/**
* 错误信息
*/
private final String message;
/**
* 成功
*/
SUCCESS(0, "ok"),
/**
* 请求参数错误
*/
PARAMS_ERROR(40000, "请求参数错误");
@Override
public int getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}
我们的优势😎
相比传统的创建Web项目,无需整合接口文档,拥有丰富的错误码,灵活的全局异常处理器。
pom.xml
+11
Original file line number Diff line number Diff line change
@@ -17,6 +17,11 @@
Build web applications quickly with SwiftWeb.
https://github.com/poboll/swift-web
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties>
<!-- 许可证部分,使用 MIT License -->
<licenses>
<license>
@@ -63,6 +68,12 @@
org.projectlombok
lombok
true
org.springframework.boot
spring-boot-starter-test
test
src/main/java/com/caiths/swiftweb/common/BaseResponse.java
+6
-3
Original file line number Diff line number Diff line change
@@ -9,10 +9,14 @@
*
-
@param
-
@author poboll
-
@version: 1.0
-
@description: 基反应
*/
@Data
public class BaseResponse implements Serializable {
private static final long serialVersionUID = 4887078045405290846L;
private int code;
private T data;
@@ -29,7 +33,6 @@ public BaseResponse(int code, T data) {
this(code, data, "");
}
public BaseResponse(ErrorCode errorCode) {
this(errorCode.getCode(), null, errorCode.getMessage());
public BaseResponse(Error errorCode) { this(errorCode.getCode(), null, errorCode.getMessage());
}
}
}
src/main/java/com/caiths/swiftweb/common/Error.java
+27
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
package com.caiths.swiftweb.common;
/**
-
错误返回接口
-
@author poboll
-
@version: 1.0
-
@description: 错误返回接口, 自定义错误枚举实现该接口即可
/
public interface Error {
/*- 错误代码
- @return int
/
int getCode();
/* - 错误描述
- @return {@link String}
/
String getMessage();
/* - 系统错误 ()
*/
int SYSTEM_ERROR = 50000;
}
src/main/java/com/caiths/swiftweb/common/ErrorCode.java
+30
-6
Original file line number Diff line number Diff line change
@@ -1,19 +1,43 @@
package com.caiths.swiftweb.common;
/**
-
错误码
-
同一返回错误码
-
@author poboll
*/
public enum ErrorCode {
public enum ErrorCode implements Error {
/**
- 成功
/
SUCCESS(0, "ok"),
/* - 请求参数错误
/
PARAMS_ERROR(40000, "请求参数错误"),
/* - 未登录
/
NOT_LOGIN_ERROR(40100, "未登录"),
/* - 无权限
/
NO_AUTH_ERROR(40101, "无权限"),
/* - 请求数据不存在
/
NOT_FOUND_ERROR(40400, "请求数据不存在"),
/* - 禁止访问
/
FORBIDDEN_ERROR(40300, "禁止访问"),
/* - 系统错误
/
SYSTEM_ERROR(50000, "系统内部异常"),
/* - 操作错误
*/
OPERATION_ERROR(50001, "操作失败");
/**
@@ -22,7 +46,7 @@ public enum ErrorCode {
private final int code;
/**
- 信息
- 错误信息
*/
private final String message;
- 成功
@@ -31,12 +55,12 @@ public enum ErrorCode {
this.message = message;
}
@Override
public int getCode() {
return code;
}
@Override
public String getMessage() {
return message;
}
}
}
src/main/java/com/caiths/swiftweb/common/ResultUtils.java
+15
-12
Original file line number Diff line number Diff line change
@@ -10,42 +10,45 @@ public class ResultUtils {
/**
* 成功
*
* @param data
* @param
* @return
* @param data 数据
* @return {@link BaseResponse}<{@link T}>
*/
public static BaseResponse success(T data) {
return new BaseResponse<>(0, data, "ok");
}
/**
* 错误
* 失败
*
* @param errorCode
* @return
* @param errorCode 错误代码
* @return {@link BaseResponse}
*/
public static BaseResponse error(ErrorCode errorCode) {
public static BaseResponse error(Error errorCode) {
return new BaseResponse<>(errorCode);
}
/**
* 错误
* 失败
*
* @param code
* @param message
* @return
* @param code 代码
* @param message 消息
* @return {@link BaseResponse}
*/
public static BaseResponse error(int code, String message) {
return new BaseResponse(code, null, message);
}
/**
* 错误
* 失败
*
* @param errorCode
* @return
* @param errorCode 错误代码
* @param message 消息
* @return {@link BaseResponse}
*/
public static BaseResponse error(ErrorCode errorCode, String message) {
public static BaseResponse error(Error errorCode, String message) {
return new BaseResponse(errorCode.getCode(), null, message);
}
}
src/main/java/com/caiths/swiftweb/exception/BusinessException.java
+8
-4
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.caiths.swiftweb.exception;
import com.caiths.swiftweb.common.ErrorCode;
import com.caiths.swiftweb.common.Error;
/**
-
自定义异常类
@@ -10,24 +10,28 @@
*/
public class BusinessException extends RuntimeException {
private static final long serialVersionUID = -2970393916478025106L;
/**
- 错误码
*/
private final int code;
public BusinessException(int code, String message) {
super(message);
this.code = code;
}
public BusinessException(ErrorCode errorCode) {
public BusinessException(Error errorCode) {
super(errorCode.getMessage());
this.code = errorCode.getCode();
}
public BusinessException(ErrorCode errorCode, String message) {
public BusinessException(Error errorCode, String message) {
super(message);
this.code = errorCode.getCode();
}
public int getCode() {
return code;
}
}
}
src/main/java/com/caiths/swiftweb/exception/GlobalExceptionHandler.java
+13
-1
Original file line number Diff line number Diff line change
@@ -16,15 +16,27 @@
@Slf4j
public class GlobalExceptionHandler {
/**
- 业务异常处理程序
- @param e e
- @return {@link BaseResponse}<{@link ?}>
*/
@ExceptionHandler(BusinessException.class)
public BaseResponse<?> businessExceptionHandler(BusinessException e) {
log.error("businessException: " + e.getMessage(), e);
return ResultUtils.error(e.getCode(), e.getMessage());
}
/**
- 运行时异常处理程序
- @param e e
- @return {@link BaseResponse}<{@link ?}>
*/
@ExceptionHandler(RuntimeException.class)
public BaseResponse<?> runtimeExceptionHandler(RuntimeException e) {
log.error("runtimeException", e);
return ResultUtils.error(ErrorCode.SYSTEM_ERROR, e.getMessage());
}
}
}
- 错误码