Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
package group.idealworld.dew.errorInfo;

/**
* 自定义全局异常.
* @author nipeixuan
*/
public abstract class AbstractException extends RuntimeException implements ErrorInfo {

public AbstractException() {
super();
}

public AbstractException(String message) {
super(message);
}

public AbstractException(String message, Throwable cause) {
super(message, cause);
}

public AbstractException(Throwable cause) {
super(cause);
}

protected AbstractException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) {
super(message, cause, enableSuppression, writableStackTrace);
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package group.idealworld.dew.errorInfo;

import lombok.Getter;

/**
* 客户端异常标记接口。
* 用于标记{@link ClientException}对象的错误码参数类型,防止错误码串用.
* @author nipeixuan
*/
public interface ClientErrorCodeMark extends ErrorInfo {

@Getter
enum Code implements ClientErrorCodeMark {

PARAMETER_ERROR("errorCode 1", "parameter error"),

FREQUENTLY("errorCode 2", "the operation is too frequent. Please try again later"),
;

Code(String errorCode) {
this.errorCode = errorCode;
}
Code(String errorCode, String errorDesc) {
this.errorCode = errorCode;
this.errorDesc = errorDesc;
}

/**
* 错误码.
*/
private String errorCode;
/**
* 错误码对应的外部描述信息,该信息是通过错误码自动获取,并且直接返回给调用方.
*/
private String errorDesc;
}

/**
* 快速构建一个自定义错误描述错误信息对象.
*/
default ClientErrorCodeMark as(String desc) {
ErrorInfo errorInfo = this;
return new ClientErrorCodeMark() {
@Override
public String getErrorCode() {
return errorInfo.getErrorCode();
}

@Override
public String getErrorDesc() {
return desc;
}
};
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
package group.idealworld.dew.errorInfo;

import lombok.Setter;
import org.apache.commons.lang3.StringUtils;

/**
* @author nipeixuan
*/
public class ClientException extends AbstractException {

private ErrorInfo errorCode;
/**
* 本地错误描述信息,其优先级高于{@link ErrorInfo}中的errorDesc,即如果该值不为空,则以该值为准
*/
@Setter
private String errorDesc;

public ClientException(ClientErrorCodeMark errorCode) {
super();
this.errorCode = errorCode;
}

public ClientException(ClientErrorCodeMark errorCode, String message) {
super(message);
this.errorCode = errorCode;
}

public ClientException(ClientErrorCodeMark errorCode, Throwable cause) {
super(cause);
this.errorCode = errorCode;
}

public ClientException(ClientErrorCodeMark errorCode, String message, Throwable cause) {
super(message, cause);
this.errorCode = errorCode;
}

@Override
public String getErrorCode() {
return errorCode.getErrorCode();
}

@Override
public String getErrorDesc() {
if (!StringUtils.isEmpty(errorDesc)) {
return errorDesc;
}
return errorCode.getErrorDesc();
}

@Override
public String getMessage() {
String message = super.getMessage();
if (StringUtils.isEmpty(message)) {
message = this.getErrorDesc();
}
return message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
package group.idealworld.dew.errorInfo;

/**
* 公共接口,能获取错误描述和错误码.
*
* @author nipeixuan
*/
public interface ErrorInfo {


String getErrorCode();


String getErrorDesc();

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,61 @@
package group.idealworld.dew.errorInfo;

import lombok.Getter;

public interface ModuleErrorCodeMark extends ErrorInfo{

@Getter
enum Code implements ModuleErrorCodeMark {

HAZELCAST_ERROR("errorCode8", "hazelcast error"),

MQTT_ERROR("errorCode9", "mqtt error"),

RABBIT_ERROR("errorCode10", "rabbit error"),

RADIS_ERROR("errorCode11", "redis error"),

ROCKET_ERROR("errorCode12", "rocket error"),

DBUTILS_ERROR("errorCode13", "dbutils error"),

HBASE_ERROR("errorCode13", "hbase error"),

;

Code(String errorCode) {
this.errorCode = errorCode;
}
Code(String errorCode, String errorDesc) {
this.errorCode = errorCode;
this.errorDesc = errorDesc;
}

/**
* 错误码.
*/
private String errorCode;
/**
* 错误码对应的外部描述信息,该信息是通过错误码自动获取,并且直接返回给调用方.
*/
private String errorDesc;
}

/**
* 快速构建一个自定义错误描述错误信息对象.
*/
default ModuleErrorCodeMark as(String desc) {
ErrorInfo errorInfo = this;
return new ModuleErrorCodeMark() {
@Override
public String getErrorCode() {
return errorInfo.getErrorCode();
}
@Override
public String getErrorDesc() {
return desc;
}
};
}

}
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
package group.idealworld.dew.errorInfo;

import lombok.Setter;
import org.apache.commons.lang3.StringUtils;

public class ModuleException extends AbstractException{

private ErrorInfo errorCode;
/**
* 本地错误描述信息,其优先级高于{@link ErrorInfo}中的errorDesc,即如果该值不为空,则以该值为准
*/
@Setter
private String errorDesc;

public ModuleException(ClientErrorCodeMark errorCode) {
super();
this.errorCode = errorCode;
}

public ModuleException(ClientErrorCodeMark errorCode, String message) {
super(message);
this.errorCode = errorCode;
}

public ModuleException(ClientErrorCodeMark errorCode, Throwable cause) {
super(cause);
this.errorCode = errorCode;
}

public ModuleException(ClientErrorCodeMark errorCode, String message, Throwable cause) {
super(message, cause);
this.errorCode = errorCode;
}

@Override
public String getErrorCode() {
return errorCode.getErrorCode();
}

@Override
public String getErrorDesc() {
if (!StringUtils.isEmpty(errorDesc)) {
return errorDesc;
}
return errorCode.getErrorDesc();
}

@Override
public String getMessage() {
String message = super.getMessage();
if (StringUtils.isEmpty(message)) {
message = this.getErrorDesc();
}
return message;
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package group.idealworld.dew.errorInfo;

import lombok.AllArgsConstructor;
import lombok.Getter;

/**
* 标记接口.
* 用于标记{@link SystemException}对象的错误码参数类型,防止错误码串用.
* @author nipeixuan
*/
public interface SystemErrorCodeMark extends ErrorInfo {

/**
* 我方系统异常错误码枚举
*/
@Getter
@AllArgsConstructor
enum Code implements SystemErrorCodeMark {

/**
* 系统错误(本系统).
*/
SYSTEM_ERROR_LOCAL("error Code3", "system error"),
/**
* 系统内部错误(其他服务引起的错误,如通道异常)
*/
SYSTEM_ERROR_OTHER("error Code4", "system busy"),

// -----------------------------------------------------------------------------------------------------------------

/**
* 系统内部错误
*/
SYS_0001("error code5"),
/**
* API不存在
*/
SYSTEM_NOT_API("error code6" , "API not exists"),
/**
* API不存在
*/
HTTP_NOT_SUPPORTED("error code7" , "the request method is not supported"),
;

Code(String errorCode) {
this.errorCode = errorCode;
}

/**
* 错误码.
*/
private String errorCode;
/**
* 错误码对应的外部描述信息,该信息是通过错误码自动获取,并且直接返回给调用方.
*/
private String errorDesc;
}

/**
* 快速构建一个自定义错误描述错误信息对象.
*/
default SystemErrorCodeMark as(String desc) {
ErrorInfo errorInfo = this;
return new SystemErrorCodeMark() {
@Override
public String getErrorCode() {
return errorInfo.getErrorCode();
}

@Override
public String getErrorDesc() {
return desc;
}
};
}

}
Loading