TsgcTCPClient › Ereignisse › OnError

OnError Ereignis

Wird jedes Mal ausgelöst, wenn ein nicht schwerwiegender Fehler auf der TCP-Verbindung gemeldet wird.

Syntax

property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object

Standardwert

—

Hinweise

OnError meldet Probleme auf Transportebene, die beim Senden oder Empfangen von Daten über den TCP-Socket erkannt werden, wie etwa einen fehlgeschlagenen TLS-Handshake, einen Heartbeat-Timeout oder einen Fehler, der beim Verteilen einer empfangenen Nutzlast ausgelöst wird. Der Parameter Error enthält eine Textbeschreibung des Fehlers; der Parameter Connection identifiziert die betroffene Sitzung. Verwenden Sie für nicht behandelte Ausnahmen (Socket-Fehler, Zugriffsverletzungen...) stattdessen OnException. Wenn Connection zugewiesen ist, schließt die Komponente diese Verbindung, nachdem OnError ausgelöst wurde, unabhängig von den Optionen: Der Handler ist zu diesem Zeitpunkt normalerweise bereits zurückgekehrt, aber mit NotifyEvents auf neAsynchronous wird ein auf einem sekundären Thread ausgelöster Fehler in den Hauptthread eingereiht, und sein Handler kann ausgeführt werden, nachdem die Verbindung bereits geschlossen wurde. Wenn Connection nil ist, wird nichts geschlossen.

OnError kann mit Connection = nil ausgelöst werden, daher muss ein Handler Connection prüfen, bevor er sie verwendet. WriteData und WriteAndWaitData melden auf diese Weise eine Nachricht, die nicht gesendet werden konnte, weil der Client nicht verbunden ist. Der Parameter Error lautet dann Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), und das Ereignis wird auf dem Thread ausgelöst, der die Methode aufgerufen hat, bevor die Methode zurückkehrt. Ein Schreibvorgang, der fehlschlägt, nachdem der Client erneut verbunden wurde, wird ebenfalls mit Connection = nil gemeldet, sodass die neue Verbindung nicht geschlossen wird. Setzen Sie Options.RaiseDisconnectExceptions im Code auf False, um die Meldung von Nachrichten zu deaktivieren, die nicht gesendet werden konnten.

Beispiel


procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
  WriteLn('#error: ' + Error);
end;

Zurück zu Ereignissen