TsgcWSPServer_WAMPMetody › CallError

CallError Metoda

Wysyła odpowiedź CALLERROR (typ wiadomości 4) do wywołującego, gdy zdalna procedura nie mogła zostać wykonana lub zakończyła się niepowodzeniem.

Składnia

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

Parametry

NazwaTypOpis
aCallIdconst StringIdentyfikator wygenerowany przez klienta przy pierwotnym wywołaniu procedury zdalnej; służy do korelowania odpowiedzi z błędem z oczekującym wywołaniem.
aErrorURIconst StringURI (lub CURIE) jednoznacznie identyfikujący klasę błędu, na przykład http://example.com/error#not_authorized.
aErrorDescconst StringCzytelny dla człowieka opis błędu, przydatny do rejestrowania i debugowania.
aErrorDetailsconst StringOpcjonalny ładunek błędu specyficzny dla aplikacji (na przykład obiekt JSON z dodatkowym kontekstem). Gdy nie jest potrzebny, należy przekazać pusty ciąg.

Uwagi

Wywołaj CallError wewnątrz procedury obsługi OnCall (zazwyczaj w gałęzi except), gdy wywołanie RPC nie może zostać zrealizowane: nieprawidłowe argumenty, brak autoryzacji, wewnętrzny wyjątek, przekroczenie limitu czasu itp. Serwer zapisuje ramkę WAMP CALLERROR [4, CallID, ErrorURI, ErrorDesc, ErrorDetails] do wywołującego i usuwa wywołanie z listy oczekujących, co oznacza, że dla tego samego aCallId nie można już wysłać CallResult ani CallProgressResult. Jeśli aCallId jest nieznany (już odpowiedziany, anulowany lub nigdy niezarejestrowany), metoda nie wykonuje żadnej akcji.

Przykład

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;

Powrót do metod