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

ClientError

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

您可以通过以下代码来判断并获取 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()
}