Exception abfangen bzw. nicht anzeigen lassen
-
Hallo, man bekommt ja eine Exception beim TClientSocket, wenn eine Verbindung nicht zu stande kommt. Diese möchte ich gerne abfangen, damit nicht dieses "eklige" ErrorFenster aufgerufen wird.
Wenn ich
try{ ClientSocket->Open(); } catch(...) { ... }hinzuschreibe, wird das catch nicht aufgerufen, da die Fehlermeldung erst nach
void __fastcall TForm1::sck_webmp3Error(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { if(ErrorCode==10061) { Label5->Caption="Keine Verbindung"; } }auftritt.
Meine If Schleife wird noch zuvor durchlaufen, doch wie gesagt, kommt dann noch die Exception Meldung des Programms "hoch".
Wie kann ich das nun verhindern?
Gruß
Thorsten
-
if-Schleife

Natürlich mußt du die Anweisung mit einem try/catch umgeben, in der die Exception auftreten kann/sollte/wird/...
-
Ich kann mich da dunkel an
ErrorCode = 0;erinnern. Dazu gibt es auf jeden Fall Hilfe in der Hilfe. Und die Suche sollte auch noch etwas dazu finden.
-
HarHar für diesen Tread hätte mir mein Lehrer den Kopf abgerissen
@
ThorstenSteinbergIf - Verzweigung

Aber keine sorge ist mir auch schon im eifer des Gefechts passiert

-
ja, ich hatte ja das try um die Open() methode gemacht, jedoch ist der dann nie in die catch schleife gegangen. habe es nun folgender maßen gemacht:
im Error Ereignis:
if(ErrorCode==10061) { Label5->Caption="Keine Verbindung"; ErrorCode=0; }Thx @PuppetMaster2k
Gruß
Thorsten
-
ThorstenSteinberg schrieb:
catch schleife
du hast KEINE schleifen in deinem codebeispiel!
-
Doch! Schau dir noch mal genau meinen ersten Beitrag an! Die try-catch wird in einem Button-Klick-Ereigniss ausgeführt, oder auch im FormLoad, ist ja egal...
-
try/catch ist keine Schleife, genausowenig wie z.B. if/else.
Beispiele für Schleifenkonstrukte sind for oder while
-
na gut, dann sind es halt "Abfragen"

-
Um wieder zurück zu deinem Problem mit den Errors zukommen, um die Errormeldungen abzufangen gibt es ja den OnError-Event des TClientSocket, falls du bezwecken willst, dass gar keine Fehlermeldung mehr auftritt hielft dies:
void __fastcall TForm1::ClientSocket1Error(TObject *Sender, TCustomWinSocket *Socket, TErrorEvent ErrorEvent, int &ErrorCode) { ErrorCode = 0; }Obwohl ich es nicht gerade klug finde, die Errors einfach zu ignorieren.
-
Öhhm joa danke, nur ich habe es ja schon gelöst das Problem und auch nicht gesagt, dass ich die Fehlermeldungen ignorieren möchte... hier siehe zitat von weiter oben:
ja, ich hatte ja das try um die Open() methode gemacht, jedoch ist der dann nie in die catch schleife gegangen. habe es nun folgender maßen gemacht:
im Error Ereignis:
if(ErrorCode==10061) { Label5->Caption="Keine Verbindung"; ErrorCode=0; }Thx @PuppetMaster2k
Gruß
Thorstentrotzdem danke ...
-
wedmer schrieb:
Obwohl ich es nicht gerade klug finde, die Errors einfach zu ignorieren.
Seinem Code-Schnipsel nach zu urteilen, tut er das ja auch nicht. Er will lediglich verhindern, das er eine Message bei Fehlern erhält.
-
GENAU! ich kann mit einer JA-NEIN-Message nichts anfangen, wenn niemand am rechner sitzt und irgendwas angefordert wurde, was es nicht gibt. dann wird es halt nochmal probiert.