diff --git a/xy_sh/errors.go b/xy_sh/errors.go new file mode 100644 index 0000000..5563d9a --- /dev/null +++ b/xy_sh/errors.go @@ -0,0 +1,55 @@ +package xy_sh + +import "fmt" + +// ErrorCode 定义错误码类型 +type ErrorCode int + +const ( + // ErrCodeSuccess 请求成功 + ErrCodeSuccess ErrorCode = 0 + // ErrCodeFail 请求失败 + ErrCodeFail ErrorCode = -1 +) + +// SDKError SDK自定义错误 +type SDKError struct { + Code ErrorCode + Message string + Err error +} + +func (e *SDKError) Error() string { + if e.Err != nil { + return fmt.Sprintf("[%d] %s: %v", e.Code, e.Message, e.Err) + } + return fmt.Sprintf("[%d] %s", e.Code, e.Message) +} + +func (e *SDKError) Unwrap() error { + return e.Err +} + +// NewSDKError 创建SDK错误 +func NewSDKError(code ErrorCode, message string, err error) *SDKError { + return &SDKError{ + Code: code, + Message: message, + Err: err, + } +} + +var ( + // ErrInvalidConfig 无效配置 + ErrInvalidConfig = NewSDKError(ErrCodeFail, "无效配置", nil) + // ErrEncryptFailed 加密失败 + ErrEncryptFailed = NewSDKError(ErrCodeFail, "加密失败", nil) + // ErrDecryptFailed 解密失败 + ErrDecryptFailed = NewSDKError(ErrCodeFail, "解密失败", nil) + // ErrSignFailed 签名失败 + ErrSignFailed = NewSDKError(ErrCodeFail, "签名失败", nil) + // ErrRequestFailed 请求失败 + ErrRequestFailed = NewSDKError(ErrCodeFail, "请求失败", nil) + // ErrResponseParseFailed 响应解析失败 + ErrResponseParseFailed = NewSDKError(ErrCodeFail, "响应解析失败", nil) +) \ No newline at end of file