AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke INDY 10 exections abfangen oder nicht
Thema durchsuchen
Ansicht
Themen-Optionen

INDY 10 exections abfangen oder nicht

Ein Thema von bernhard_LA · begonnen am 16. Apr 2012 · letzter Beitrag vom 25. Apr 2012
Antwort Antwort
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.136 Beiträge
 
Delphi 11 Alexandria
 
#1

INDY 10 exections abfangen oder nicht

  Alt 16. Apr 2012, 13:12
nicht jede indy exeception speziell auf server seite ist ja ein fehler http://www.swissdelphicenter.ch/en/showarticle.php?id=1, man kann in der delphi IDE die exception überdrücken. ist es folglich sinnlos mit folgendem Code die
exception auf der server seite noch zu verfolgen ?


Delphi-Quellcode:

procedure TForm1.ServerException;
begin
  Memo1.Lines.Add('A Exception happend');
end;

procedure TForm1.IdTCPServer1Exception(AContext: TIdContext;
  AException: Exception);
begin
  TIdNotify.NotifyMethod(ServerException);
  Memo1.Lines.Add(AException.ClassName);
end;

procedure TForm1.IdTCPServer1Execute(AContext: TIdContext);
var
  ...
  AException: Exception;
  LSize: LongInt;
begin

  try
  begin

  Memo1.Lines.Add('svr start execute !');

  ...
  
  .....

  ..

  .

  Memo1.Lines.Add('svr end execute !');
  end;
  except
  on e: exception do
        begin
        IdTCPServer1Exception(AContext, AException);
        Raise;
        end;
  end;
end;
  Mit Zitat antworten Zitat
Benutzerbild von DataCool
DataCool

Registriert seit: 10. Feb 2003
Ort: Lingen
909 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: INDY 10 exections abfangen oder nicht

  Alt 25. Apr 2012, 10:33
Hi Bernhard,

ich rate Dir auf keinen Fall Indy-Exceptions im OnExecute Event des Servers zu schlucken !!!!
Wenn Du das machst, kann es nämlich sein das Indy gar nicht mitbekommt das ein Fehler aufgetreten ist
und unter Umständen hast Du dann eine ewige "Zombie-Connection".

Das OnExecute des Server tritt ja innerhalb eines Threads immer wieder auf:

- Indy startet Thread für Connection
Solange Connected & keine Exception do
begin
OnExecute(AContext);
Prüfe Connection; <------ genau das kann zu einem falschen Ergebnis kommen wenn Du Exceptions schluckst
end;


Falls Du aber im OnExecute wirklich auf eine bestimmte Exception reagieren möchtest, dann so:

Delphi-Quellcode:
  try

  except
    on e:exception do begin
      Log(e.Message); // oder was auch immer Du mit der Exception tuen möchtest
      raise; // Exception neu auslösen, damit diese auch bei Indy ankommt
    end;
  end;
Greetz Data
Der Horizont vieler Menschen ist ein Kreis mit Radius Null, und das nennen sie ihren Standpunkt.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz