TsgcTCPClient › Olaylar › OnError

OnError Olay

TCP bağlantısında her ölümcül olmayan hata bildirildiğinde tetiklenir.

Sözdizimi

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

Varsayılan Değer

—

Remarks

OnError, TCP soketinde veri gönderirken veya alırken algılanan taşıma seviyesindeki sorunları raporlar; örneğin başarısız bir TLS handshake, bir heartbeat zaman aşımı veya alınan bir yükü gönderirken yükseltilen bir hata. Error parametresi başarısızlığın metinsel bir açıklamasını içerir; Connection parametresi etkilenen oturumu tanımlar. İşlenmeyen istisnalar (soket hataları, erişim ihlalleri...) için bunun yerine OnException kullanın. Connection atanmışsa, bileşen, OnError tetiklendikten sonra seçeneklerden bağımsız olarak o bağlantıyı kapatır: işleyici genellikle bu noktada zaten geri dönmüştür, ancak NotifyEvents neAsynchronous olarak ayarlandığında ikincil bir iş parçacığında oluşan bir hata ana iş parçacığına kuyruğa alınır ve işleyicisi bağlantı kapatıldıktan sonra çalışabilir. Connection nil olduğunda hiçbir şey kapatılmaz.

OnError, Connection = nil ile tetiklenebilir, bu yüzden bir işleyici Connection'ı kullanmadan önce kontrol etmelidir. WriteData ve WriteAndWaitData, istemci bağlı olmadığı için gönderilemeyen bir mesajı bu şekilde bildirir. Bu durumda Error parametresi Data not sent, the client is not connected or its handshake has not completed. (resourcestring S_ERROR_CLIENT_NOT_CONNECTED) olur ve olay, yöntemi çağıran iş parçacığında, yöntem geri dönmeden önce tetiklenir. İstemci yeniden bağlandıktan sonra başarısız olan bir yazma da Connection = nil ile bildirilir, böylece yeni bağlantı kapatılmaz. Gönderilemeyen mesajların bildirimini devre dışı bırakmak için kodda Options.RaiseDisconnectExceptions öğesini False olarak ayarlayın.

Örnek


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

Olaylara Dön