TsgcWSPServer_WAMPメソッド › CallError

CallError メソッド

リモートプロシージャが実行できなかったか、または正常に終了しなかった場合に、呼び出し元に CALLERROR 返信(メッセージタイプ 4)を送信します。

構文

procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');

パラメータ

名前タイプ説明
aCallIdconst Stringクライアントがリモートプロシージャを呼び出したときに生成された識別子。エラー応答と保留中の呼び出しを相関付けるために使用されます。
aErrorURIconst Stringエラークラスを一意に識別する URI(または CURIE)。例: http://example.com/error#not_authorized
aErrorDescconst Stringエラーの人間が読める説明。ログ記録とデバッグに役立ちます。
aErrorDetailsconst Stringオプションのアプリケーション固有のエラーペイロード(例:追加コンテキストを持つ JSON オブジェクト)。不要な場合は空文字列を渡してください。

解説

RPCを実行できない場合(無効な引数、認可の欠如、内部例外、タイムアウトなど)、OnCallハンドラの内部(通常はexceptブランチ)からCallErrorを呼び出します。サーバーはWAMPのCALLERRORフレーム[4, CallID, ErrorURI, ErrorDesc, ErrorDetails]を呼び出し元に書き込み、保留中のリストから呼び出しを削除します。これは、同じaCallIdに対してそれ以上のCallResultまたはCallProgressResultを送信できないことを意味します。aCallIdが不明な場合(すでに応答済み、キャンセル済み、または登録されていない場合)、メソッドは何も行いません。

使用例

procedure TForm1.sgcWSPServer_WAMP1Call(Connection: TsgcWSConnection;
  const CallId, ProcURI: string; Arguments: TStringList);
begin
  try
    if ProcURI = 'com.example.divide' then
      sgcWSPServer_WAMP1.CallResult(CallId, IntToStr(10 div StrToInt(Arguments[0])));
  except
    on E: Exception do
      sgcWSPServer_WAMP1.CallError(CallId,
        'http://example.com/error#invalid_argument', E.Message, '');
  end;
end;

メソッドに戻る