diff --git a/intelligence_finance_v1/errors.go b/intelligence_finance_v1/errors.go new file mode 100644 index 0000000..934543e --- /dev/null +++ b/intelligence_finance_v1/errors.go @@ -0,0 +1,59 @@ +package intelligence_finance_v1 + +import "fmt" + +// SDKError SDK通用错误类型 +type SDKError struct { + Code int `json:"code"` + Message string `json:"message"` + Err error `json:"-"` +} + +// Error 实现error接口 +func (e *SDKError) Error() string { + if e.Err != nil { + return fmt.Sprintf("code=%d, message=%s, err=%v", e.Code, e.Message, e.Err) + } + return fmt.Sprintf("code=%d, message=%s", e.Code, e.Message) +} + +// Unwrap 返回包装的错误 +func (e *SDKError) Unwrap() error { + return e.Err +} + +// NewSDKError 创建SDK错误 +func NewSDKError(code int, message string, err error) *SDKError { + return &SDKError{ + Code: code, + Message: message, + Err: err, + } +} + +// 预定义错误码 +const ( + ErrCodeSuccess = 0 + ErrCodeUnknown = -1 + ErrCodeInvalidParam = 1001 + ErrCodeSignatureFailed = 1002 + ErrCodeNetworkError = 1003 + ErrCodeRequestTimeout = 1004 + ErrCodeServerError = 2001 + ErrCodeUnauthorized = 2002 + ErrCodeNotFound = 2003 + ErrCodeRateLimit = 2004 +) + +// 预定义错误 +var ( + ErrUnknown = NewSDKError(ErrCodeUnknown, "未知错误", nil) + ErrInvalidParam = NewSDKError(ErrCodeInvalidParam, "参数无效", nil) + ErrSignatureFailed = NewSDKError(ErrCodeSignatureFailed, "签名失败", nil) + ErrNetworkError = NewSDKError(ErrCodeNetworkError, "网络错误", nil) + ErrRequestTimeout = NewSDKError(ErrCodeRequestTimeout, "请求超时", nil) + ErrServerError = NewSDKError(ErrCodeServerError, "服务端错误", nil) + ErrUnauthorized = NewSDKError(ErrCodeUnauthorized, "未授权", nil) + ErrNotFound = NewSDKError(ErrCodeNotFound, "未找到", nil) + ErrRateLimit = NewSDKError(ErrCodeRateLimit, "请求频率限制", nil) +) \ No newline at end of file