TsgcTCPClient › Événements › OnError
Se déclenche chaque fois qu'une erreur non fatale est signalée sur la connexion TCP.
property OnError: TsgcWSErrorEvent;
// TsgcWSErrorEvent = procedure(Connection: TsgcWSConnection; const Error: string) of object
—
OnError signale les problèmes au niveau du transport détectés lors de l'envoi ou de la réception de données sur le socket TCP, tels qu'un échec de la négociation TLS, un délai d'expiration du heartbeat ou une erreur levée lors de la distribution d'une charge utile reçue. Le paramètre Error contient une description textuelle de l'échec ; le paramètre Connection identifie la session concernée. Pour les exceptions non gérées (erreurs de socket, violations d'accès...) utilisez OnException à la place. Lorsque Connection est renseigné, le composant ferme cette connexion une fois que OnError a été levé, quelles que soient les options : le gestionnaire est normalement déjà retourné à ce moment, mais avec NotifyEvents défini sur neAsynchronous, une erreur levée sur un thread secondaire est mise en file d'attente vers le thread principal et son gestionnaire peut s'exécuter après que la connexion a été fermée. Lorsque Connection est nil, rien n'est fermé.
OnError peut se déclencher avec Connection = nil, un gestionnaire doit donc vérifier Connection avant de l'utiliser. WriteData et WriteAndWaitData signalent ainsi un message qui n'a pas pu être envoyé parce que le client n'est pas connecté. Le paramètre Error vaut alors Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), et l'événement se déclenche sur le thread qui a appelé la méthode, avant que la méthode ne retourne. Un envoi qui échoue après que le client s'est reconnecté est également signalé avec Connection = nil, de sorte que la nouvelle connexion n'est pas fermée. Définissez Options.RaiseDisconnectExceptions sur False dans le code pour désactiver le signalement des messages qui n'ont pas pu être envoyés.
procedure OnError(Connection: TsgcWSConnection; const Error: string);
begin
WriteLn('#error: ' + Error);
end;