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返回码和错误码。除了错误码参考之外,以下为仅在客户端会发生的错误。
      6 OTSCouldntResolveHost 无法解析域名。实例访问地址有错,或者网络不通。
      7 OTSCouldntConnect 无法连接服务端。本地host文件配置错误。
      28 OTSRequestTimeout 请求超时。
      35 OTSSslHandshakeFail HTTPS握手失败。没有安装本地的证书。
      55 OTSWriteRequestFail 网络发送失败。网络中断。
      56 OTSCorruptedResponse 响应不完整。
      89 OTSNoAvailableConnection 没有可用的连接。通常发生在客户端刚刚构造时,或者因为并发的请求数超过了网络连接数。
    • message:错误的详细说明。
    • requestId:每个发送到服务端的请求都会由服务端分配一个编号。如果响应正常返回,响应对象里会有requestId。 如果服务端判断请求出错,那么错误对象中会带有requestId。 如果在请求发送之前,或者网络链路上出错,那么错误对象里不会有requestId。
    • traceId:每个API调用都会由客户端分配traceId。不同的API调用分配的traceId不同。同一个API调用涉及多次重试的,traceId相同,但是requestId可能不同。