全部产品
弹性计算 会员服务 网络 安全 移动云 数加·大数据分析及展现 数加·大数据应用 管理与监控 云通信 阿里云办公 培训与认证 智能硬件
存储与CDN 数据库 域名与网站(万网) 应用服务 数加·人工智能 数加·大数据基础服务 互联网中间件 视频服务 开发者工具 解决方案 物联网 更多
表格存储

错误处理

更新时间:2018-03-08 20:38:16

TableStore C++ SDK采用返回值的方式处理错误。可能发生错误的接口都会返回Optional<OTSError>对象。

  • Optional<T>是在tablestore/util/optional.hpp中定义的一个模板类。可以把它视为只能存放至多一个T对象的箱子。箱子里有两种情况,以此来判断错误是否发生:

    • 如果有一个T对象,可以取出这个T对象来用。此时,Optional<T>::present()返回true,表示有错误发生。

    • 如果没有T对象,此时Optional<T>::present()返回false,表示没有错误。

  • OTSError对象表示一个具体的错误。它有5个字段:

    • httpStatuserrorCode:HTTP返回码和错误码。除了错误码参考之外,以下为仅在客户端会发生的错误。

      HTTP返回码错误码描述
      6OTSCouldntResolveHost无法解析域名。实例访问地址有错,或者网络不通。
      7OTSCouldntConnect无法连接服务端。本地host文件配置错误。
      28OTSRequestTimeout请求超时。
      35OTSSslHandshakeFailHTTPS握手失败。没有安装本地的证书。
      55OTSWriteRequestFail网络发送失败。网络中断。
      56OTSCorruptedResponse响应不完整。
      89OTSNoAvailableConnection没有可用的连接。通常发生在客户端刚刚构造时,或者因为并发的请求数超过了网络连接数。
    • message:错误的详细说明。

    • requestId:每个发送到服务端的请求都会由服务端分配一个编号。如果响应正常返回,响应对象里会有requestId。 如果服务端判断请求出错,那么错误对象中会带有requestId。 如果在请求发送之前,或者网络链路上出错,那么错误对象里不会有requestId。

    • traceId:每个API调用都会由客户端分配traceId。不同的API调用分配的traceId不同。同一个API调用涉及多次重试的,traceId相同,但是requestId可能不同。

本文导读目录