TsgcWSPServer_WAMP › Metody › CallError
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.
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| Nazwa | Typ | Opis |
|---|---|---|
aCallId | const String | Identyfikator wygenerowany przez klienta przy pierwotnym wywołaniu procedury zdalnej; służy do korelowania odpowiedzi z błędem z oczekującym wywołaniem. |
aErrorURI | const String | URI (lub CURIE) jednoznacznie identyfikujący klasę błędu, na przykład http://example.com/error#not_authorized. |
aErrorDesc | const String | Czytelny dla człowieka opis błędu, przydatny do rejestrowania i debugowania. |
aErrorDetails | const String | Opcjonalny ładunek błędu specyficzny dla aplikacji (na przykład obiekt JSON z dodatkowym kontekstem). Gdy nie jest potrzebny, należy przekazać pusty ciąg. |
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.
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;