TsgcTCPClient › Eventos › OnError

OnError Evento

Dispara toda vez que um erro não fatal é reportado na conexão TCP.

Sintaxe

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

Valor Padrão

—

Observações

OnError reporta problemas no nível de transporte detectados ao enviar ou receber dados no socket TCP, como um handshake TLS falhado, um timeout de heartbeat, ou um erro gerado ao despachar um payload recebido. O parâmetro Error contém uma descrição textual da falha; o parâmetro Connection identifica a sessão afetada. Para exceções não tratadas (erros de socket, access violations...) utilize OnException. Quando Connection está atribuído, o componente fecha essa conexão assim que OnError é disparado, quaisquer que sejam as opções: o handler normalmente já retornou nesse momento, mas com NotifyEvents definido como neAsynchronous, um erro gerado em uma thread secundária é enfileirado para a thread principal, e seu handler pode ser executado depois que a conexão já foi fechada. Quando Connection é nil, nada é fechado.

OnError pode disparar com Connection = nil, portanto um handler deve verificar Connection antes de utilizá-lo. WriteData e WriteAndWaitData relatam desta forma uma mensagem que não pôde ser enviada porque o cliente não está conectado. O parâmetro Error é então Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED), e o evento é disparado na thread que chamou o método, antes que o método retorne. Uma escrita que falha depois que o cliente reconectou também é relatada com Connection = nil, para que a nova conexão não seja fechada. Defina Options.RaiseDisconnectExceptions como False no código para desabilitar o relato de mensagens que não puderam ser enviadas.

Exemplo


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

Voltar para Eventos