阿里云Go SDK在服务端或者SDK端出错时,会返回相应的错误信息,即sdk.errors包下的ClientErrorServerError。这些错误是基于Go的标准Error接口实现的,您可以像处理Go标准错误一样来处理阿里云Go SDK返回的错误。

ClientError

当SDK内部的任意调用出现error,并无法自动化处理时,SDK会返回一个ClientError

阿里云2000元代金券免费领,最新优惠1折抢购,2核4G云服务器仅799元/3年,新老用户同享,立即抢购>>>

您可以通过以下代码来判断并获取 ClientError中的错误信息:

response, err := ecsClient.DescribeInstances(request) if clientError, ok := err.(*errors.ClientError); ok{     // 获取错误码     clientError.ErrorCode()     // 获取错误描述     clientError.Message()     // 获取原始错误(可能为nil)     clientError.OriginError() }

ServerError

当服务端返回错误的应答时,SDK会将该应答封装成 ServerError返回。

说明 在这种情况下,您依然可以从response中获得原始的HTTP应答。

您可以通过以下代码来判断并获取ServerError以及Response中的错误信息:

response, err := ecsClient.DescribeInstances(request)     if serverError, ok := err.(*errors.ServerError); ok{     // 获取错误码     serverError.ErrorCode()     // 获取错误描述     serverError.Message()     // 获取原始http应答     response.GetOriginHttpResponse() }