diff --git a/errors.go b/errors.go new file mode 100644 index 0000000..2e4a028 --- /dev/null +++ b/errors.go @@ -0,0 +1,41 @@ +package xyshanghai + +import "fmt" + +// ErrorCode 定义错误码类型 +type ErrorCode int + +const ( + // ErrCodeSuccess 成功 + ErrCodeSuccess ErrorCode = 0 + // ErrCodeFailure 失败 + ErrCodeFailure 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("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 ErrorCode, message string, err error) *SDKError { + return &SDKError{ + Code: code, + Message: message, + Err: err, + } +} \ No newline at end of file