TableStore C++ SDK は戻り値を使用してエラーを処理します。 エラーを生成する可能性のあるすべてのインターフェイスは Optional<OTSError> オブジェクトを返します。

  • Optional<T> は "tablestore/util/optional.hpp" で定義されているテンプレートクラスです。 ただ 1 つの T オブジェクトを保存できる箱として考えます。 ボックス内には、エラーが発生したかどうかを判断するために使用できる 2 つのシナリオがあります。

    • T オブジェクトが存在する場合は、それを取り出して利用することができます。 この場合、Optional<T>::present() は true を返して、エラーが発生したことを示します。

    • T オブジェクトが存在しない場合、Optional<T>::present() は false を返して、エラーが発生していないことを示します。

  • OTSError オブジェクトは特定のエラーを示します。 5 つのフィールドがあります。

    • httpStatus および errorCode は、HTTP リターンコードとエラーコードです。 と Error messages に加えて、以下のエラーはクライアントでのみ発生します。
      6 OTSCouldntResolveHost ドメイン名を解決できません。 インスタンスアクセスアドレスが間違っているか、ネットワークが切断されています。
      7 OTSCouldntConnect サービスに接続できません。 ローカルホストファイルの設定エラーです。
      28 OTSRequestTimeout リクエストがタイムアウトしました。
      35 OTSSslHandshakeFail HTTPS ハンドシェイクに失敗しました。 ローカル証明書がインストールされていません。
      55 OTSWriteRequestFail ネットワーク配信に失敗しました。 ネットワークの中断です。
      56 OTSCorruptedResponse 不完全な応答です。
      89 OTSNoAvailableConnection 利用可能な接続がありません。 これは通常、新しく構築されたクライアントまたは同時要求がネットワーク接続の総数を超えると発生します。
    • message: エラーの詳細です。
    • requestId: サービスに送信された各要求には、サービスによって番号が割り当てられます。 応答が正常に返された場合、レスポンスオブジェクトには requestId が含まれています。 リクエストにエラーがあるとサービスが判断した場合、エラーオブジェクトには requestId が含まれます。 要求が送信される前にエラーが発生した場合、またはネットワークリンクでエラーが発生した場合、エラーオブジェクトには requestId は含まれません。
    • traceId: 各 API 呼び出しには、クライアントによって traceId が割り当てられます。 異なる API 呼び出しには異なる traceIdが 割り当てられています。 同じ API 呼び出しが繰り返し試行された場合、traceId は同じままですが、 requestId は異なる可能性があります。