Entwickler-Ecke

Internet / Netzwerk - Indy 9 - Socket Exceptions Abfangen, wie?


Xenomorph150 - Do 23.02.06 12:01
Titel: Indy 9 - Socket Exceptions Abfangen, wie?
Hi Leute,
ich wollte, da ich inzwischen bei meinem Chat schon einige Fortschritte gemacht habe,
schon mal exceptions Abfangen, für alle Fälle nur (z.b. User versucht zu Connecten, kriegt aber kein Connect).
Leider stellt sich das als schwieriger heraus, als es scheint.

Ich versuchte schon einen

try
was gemacht werden soll;
except
was passieren soll im fehlerfall;

Block zu machen,
dennoch wirft der munter weiter exceptions!

Irgendeine Idee? ^^
Und es wurde gesagt man könnte irgendwie auch die Exceptionnummer auslesen und somit unterschiedliche Fehler, passend zum Code ausgeben.... Weiß wer wie?

Mfg
Nico


covel - Do 23.02.06 13:17

wenn du die EXE ausführst, sollte es keine Fehlermeldung mehr geben.


Xenomorph150 - Do 23.02.06 13:24

O.o
Ok, das ist witzig,
hab ich inzwischen rausgefunden:
Wenn ich die exe direkt starte, führt der das Except korrekt aus!
Aber..
Hm...
Ok ^^'
Bleibt noch die Frage, wie man entsprechende Exceptions für entsprechende Exceptionummern wirft!

Mfg
Nico


Grendel - Do 23.02.06 14:36

user profile iconXenomorph150 hat folgendes geschrieben:
Ok, das ist witzig,
hab ich inzwischen rausgefunden:
Wenn ich die exe direkt starte, führt der das Except korrekt aus!

Das ist nicht witzig sondern normal. Im Debugmodus werden Exceptions immer angezeigt es sei denn Du unterdrückst bestimmte Exception-Typen explizit. Das kannst Du über Tools -> Debugger-Optionen -> Sprach-Exceptions realisieren.


user profile iconXenomorph150 hat folgendes geschrieben:
Bleibt noch die Frage, wie man entsprechende Exceptions für entsprechende Exceptionummern wirft!

Welche Exceptionnummern? Die Indys werfen doch genau definierte Exceptions. So z.B. EIdReadTimeout, EIdConnClosedGracefully, etc.. daraus geht die Art des Fehlers doch hervor.
Die genaue Meldung kannst Du folgendermaßen ausgeben:


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
try
  ...
except
  on E: Exception do
  begin
    ShowMessage(E.Message);
  end;
end;


Oder meinst Du noch etwa anderes?

Bis neulich ...


Xenomorph150 - Do 23.02.06 15:18

Jap, ich denke das ist genau was ich suche,
Vielen Dank!

Mfg
Nico