diff --git a/tea/tea.go b/tea/tea.go index 4fbddd3..c79c3f7 100644 --- a/tea/tea.go +++ b/tea/tea.go @@ -197,6 +197,8 @@ func NewSDKError(obj map[string]interface{}) *SDKError { if err_ == nil { err.StatusCode = Int(code) } + } else if code, ok := statusCode.(*int); ok { + err.StatusCode = code } } } diff --git a/tea/tea_test.go b/tea/tea_test.go index dedb23b..b0834fa 100644 --- a/tea/tea_test.go +++ b/tea/tea_test.go @@ -194,6 +194,14 @@ func TestSDKError(t *testing.T) { utils.AssertNotNil(t, err) utils.AssertEqual(t, 500, *err.StatusCode) + err = NewSDKError(map[string]interface{}{ + "data": map[string]interface{}{ + "statusCode": Int(500), + }, + }) + utils.AssertNotNil(t, err) + utils.AssertEqual(t, 500, *err.StatusCode) + err = NewSDKError(map[string]interface{}{ "data": map[string]interface{}{ "statusCode": "500",