TsgcWSPServer_WAMP › Methods › CallError
Sendet eine CALLERROR-Antwort (Nachrichtentyp 4) an den Aufrufer, wenn die Remote-Prozedur nicht ausgeführt werden konnte oder erfolglos beendet wurde.
procedure CallError(const aCallId, aErrorURI, aErrorDesc: String; const aErrorDetails: String = '');
| Name | Typ | Beschreibung |
|---|---|---|
aCallId | const String | Vom Client generierter Bezeichner, als er ursprünglich die Remote-Prozedur aufgerufen hat; wird verwendet, um die Fehlerantwort mit dem ausstehenden Aufruf zu korrelieren. |
aErrorURI | const String | URI (oder CURIE), die die Fehlerklasse eindeutig identifiziert, zum Beispiel http://example.com/error#not_authorized. |
aErrorDesc | const String | Menschenlesbare Beschreibung des Fehlers, nützlich für Logging und Debugging. |
aErrorDetails | const String | Optionale anwendungsspezifische Fehler-Payload (zum Beispiel ein JSON-Objekt mit zusätzlichem Kontext). Übergeben Sie eine leere Zeichenfolge, wenn sie nicht benötigt wird. |
Rufen Sie CallError aus einem OnCall-Handler heraus auf (typischerweise aus dem except-Zweig), wenn der RPC nicht erfüllt werden kann: ungültige Argumente, fehlende Autorisierung, interne Ausnahme, Timeout usw. Der Server schreibt einen WAMP-CALLERROR-Frame [4, CallID, ErrorURI, ErrorDesc, ErrorDetails] an den Aufrufer und entfernt den Aufruf aus der Pending-Liste, was bedeutet, dass kein weiteres CallResult oder CallProgressResult für dieselbe aCallId gesendet werden kann. Wenn aCallId unbekannt ist (bereits beantwortet, abgebrochen oder nie registriert), tut die Methode nichts.
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;