TsgcWSPServer_WAMP › メソッド › CallError
リモートプロシージャが実行できなかったか、または正常に終了しなかった場合に、呼び出し元に CALLERROR 返信(メッセージタイプ 4)を送信します。
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| 名前 | タイプ | 説明 |
|---|---|---|
aCallId | const String | クライアントがリモートプロシージャを呼び出したときに生成された識別子。エラー応答と保留中の呼び出しを相関付けるために使用されます。 |
aErrorURI | const String | エラークラスを一意に識別する URI(または CURIE)。例: http://example.com/error#not_authorized。 |
aErrorDesc | const String | エラーの人間が読める説明。ログ記録とデバッグに役立ちます。 |
aErrorDetails | const 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;