IdTCPClient: Exceptions komplett abfangen
spacer
Autor Nachricht
LittleBen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: So 05.02.12 22:23 
Guten Abend,
habe folgendes Problem: Wenn ich eine Verbindung zu einem Host aufbauen will, der nicht erreichbar ist, dann kommen natürlich Fehlermeldungen, die aber abgefangen werden sollen. Das sollte eigentlich kein Problem sein...ist aber eins :D
Verbindung aufbauen:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
ClientSocket:= IdTCPClient.TIdTCPClient.Create(Application);
try
ClientSocket.Host:= '192.xxx';
ClientSocket.Port:= 10001;
ClientSocket.ReadTimeout:= 2000;

try
ClientSocket.Connect(2000);
except
// Meine Versuche, die Exceptions abzufangen, folgen
end;
finally
ClientSocket.Free;
end;


Nun habe ich versucht, die Exceptions so abzufangen (die 3 Möglichkeiten habe natürlich einzeln getestet):
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
  except
// 1:
on E: EIdConnClosedGracefully do
begin
showmessage('Fehler');
exit;
end;

// 2:
on E: EIdSilentException do
begin
showmessage('Fehler');
exit;
end;

// Zuletzt einfach so
showmessage('Fehler');
exit;
end;


Wenn ich das Erste teste, dann kommt: "Socket-Fehler # 11001 Host nicht gefunden"
Beim 2. Versuch kommt die Fehlermeldung, die beim Ersten abgefangen wurde: "Die Verbindung wurde erfolgreich geschlossen" (sowie beim 3. Versuch)

Was mache ich da falsch? Wie muss ich es denn sonst machen?

Viele Grüße,
Littleben
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.


Werbung ausblenden? Dann registriere Dich kostenlos. Weitere Gründe für eine Registrierung.
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15840
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: So 05.02.12 22:49 
Ich gehe mal davon aus, dass du es ohne Debuggen mit Delphi getestet hast?

Normalerweise gibt es zwei Möglichkeiten unbekannte Exceptions abzufangen:
ausblenden Delphi-Quelltext markieren
1:
2:
3:
4:
5:
6:
on E: Exception do
ShowMessage(E.Message);

// oder, falls auch Exceptions kommen, die keine Nachfahren von Exception sind:
on E: TObject do
...
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Mo 06.02.12 14:31 
Wenn ich das so mache, dann kommt die Fehlermeldung "Die Verbindung wurde erfolgreich geschlossen", da diese ja nicht mehr mit EIdConnClosedGracefully abgefangen wird.
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 15840
Erhaltene Danke: 741

XP, W7 x64 (Chrome, IE9, FF), Debian, (OSX 10.7)
RAD XE 2, Java (NB), C++, C# (VS 2010), JS/HTML, PHP, Lazarus
BeitragVerfasst: Mo 06.02.12 15:11 
Das konnte ich nicht reproduzieren. Hättest du einmal ein kleines Beispielprojekt? :gruebel:
// EDIT:
Oder einen Screenshot von der Fehlermeldung wie die aussieht?
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
LittleBen Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 166

Win 7, Mac OS
Delphi 7
BeitragVerfasst: Di 07.02.12 15:38 
o.O Huuch...?! Auf einmal funktionierts :?: :gruebel: Umso besser :D Vielen Dank!!
 
Antworten mit Zitat Beitrag melden
Private Nachricht sendenPosting in privater Nachricht zitieren
home home