diff --git a/intelligence_finance_v1_ga/errors.go b/intelligence_finance_v1_ga/errors.go new file mode 100644 index 0000000..2da226b --- /dev/null +++ b/intelligence_finance_v1_ga/errors.go @@ -0,0 +1,38 @@ +package intelligence_finance_v1_ga + +import "fmt" + +// SDKError 表示 SDK 内部错误(网络、编解码等)。 +type SDKError struct { + Op string // 发生错误的操作名称 + Err error // 底层错误 +} + +// Error 实现 error 接口。 +func (e *SDKError) Error() string { + if e.Op != "" { + return fmt.Sprintf("intelligence_finance_v1_ga: %s: %v", e.Op, e.Err) + } + return fmt.Sprintf("intelligence_finance_v1_ga: %v", e.Err) +} + +// Unwrap 返回底层错误,支持 errors.Is / errors.As。 +func (e *SDKError) Unwrap() error { + return e.Err +} + +// APIError 表示平台返回的业务错误或非 200 的 HTTP 响应。 +type APIError struct { + HTTPStatus int // HTTP 状态码(非 200 时设置) + Code int // 平台业务错误码 + Msg string // 平台错误信息 + Body string // 原始响应体(HTTP 非 200 时设置) +} + +// Error 实现 error 接口。 +func (e *APIError) Error() string { + if e.HTTPStatus != 0 { + return fmt.Sprintf("intelligence_finance_v1_ga: http status %d: %s", e.HTTPStatus, e.Body) + } + return fmt.Sprintf("intelligence_finance_v1_ga: api error code=%d msg=%s", e.Code, e.Msg) +} \ No newline at end of file