全部产品
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 钉钉智能硬件
阿里云SDK开发指南

错误处理

更新时间:2018-01-31 00:33:48

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

除此以外,ClientErrorServerError还提供了额外的信息方便您处理SDK的错误。

ClientError

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

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

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

ServerError

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

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

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

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

您可以在错误中心获取更多关于服务器端错误的信息。

本文导读目录