Zum Inhalt springen

Empfohlene Beiträge

Geschrieben

ich hoffe mal ich habe das richtige forum erwischt.

ich bin gerade etwas am rumcoden - in der schule machen wir nur so pillepalle kram - und will mich etwas näher an einem pingtool (soll später teilkomponente eines programms werden) versuchen.

jetzt löst dieses "$%(/"§$& programm immer (naja fast) ne exception aus. scheinbar weil er nich connecten kann o.ä.

naja, dann hab ich mich an vb/delphi zurückerinnert und da war ja mal was von "try und on exception". also mal in der hilfe nachgeschlagen und tatsächlich try gefunden.

jetzt verlangt der immer noch ein catch () .... ich hab jetzt echt schon 2 tage alles mögliche in der hilfe durchstöbert und probiert und raffe es nicht. ich bekomme es einfach nicht hin.

ich würde gerne dass der einfach versucht sich zu connecten und den ping zu senden und wenns nicht geht soll er das halt lassen.

kann mir einer sagen wie das mit dem try und den exceptions funktioniert bei bb5? oder wo ich da was nachlesen kann, online.

achja, ich hab kein buch oder so sondern versuche es mit "learning by doing" - meiner meinung nach immer noch die beste lernmethode.

ich hoffe mir kann einer helfen, dann jetzt schon mal danke.

Geschrieben

hi!

eine kurze und simple zusammenfassung zu try and catch:

try

{

Anweisungen;

}

catch(...)

{

Anweisungen;

}

tritt im try block ein fehler auf, so werden die anweisungen im catch(...) block ausgeführt. das ganze kann man natürlich noch schön aufbohren. weiter infos unteranderem unter http://cpp.programmersbase.net/

grüsse

Geschrieben

In der Tat benötigt der try-Block noch einen catch-Block:

try

{

//tue etwas, was eine Exception wirft..

}

Jetzt müßtest Du noch wissen, was für eine Exception geworfen wird. Diese kannst Du dann im catch-Block abfangen:

catch ( ExceptionTy &e )

{

//mache irgendetwas...

}

Man kann auch alle Exception abfangen ohne Unterscheidung:

catch (...)

{

}

Ich weiß jetzt nicht, welche Internet-Komponenten im BCB 5 drin sind Netmaster oder Indy. Am besten schaust Du in der Hilfe nach um zu erfahren, welche Exception geworfen werden können.

HTH

Jan

Geschrieben

Hm, joa danke mal für die Tipps, aber so weit war ich schon gekommen. Ich tue das grad ma posten:

Ping->Host = EditHost->Text;

Ping->Port = 7;

Ping->ReportLevel = 2;

Ping->TimeOut = 9000;

if (Ping->Connected == false)

{

try

{

Ping->Connect();

TimerSendPing->Enabled = true;

}

catch(/*WAS MUS HIER REIN*/)

{

//fehlerausgabe

TimerSendPing->Enabled = false;

}

}

Ping is meine NMEcho Komponente, TimerSendPing mein Timer für kontinuierliches pingen. - Der BB5 bringt immer eine ESockError Exception oder so.

Geschrieben

Jo gut... und warum bekomm ich dann immer noch nen Exception Fehler? Dürfte doch normal nicht mehr kommen - oder ist das nur solange ich es im BB5 laufen lasse?

Geschrieben

Es gibt in der Hilfe ein Beispiel, wie man mit EchoClient arbeitet. (Ich weiß, da fehlt die Exceptionbehandlung komplett.) Sonst kannst Du Dich ja mal bei TApplication OnException (auch in der Hilfe) umsehen, ob Du damit glücklicher wirst.

HTH

Jan

Geschrieben

Hehe, genau dieses Beispiel (Example meinst du!?) habe ich jetzt mal probiert... das Ding geht bei mir überhaupt nicht, egal was ich eintrag, web.de, ne inet-ip die ip von meinem router, 127.0.0.1 .... nichts immer nur exception. ich hab das glaub schonmal probiert und meine dass da etwas mehr ging.

irgendwie komisch - gibts da noch andere lösungen oder beispiele, wie man nen "pinger" baut?

Geschrieben

Leere Klassendeklarationen kann man als Exceptions definieren. Diese können dann geworfen werden und werden über die Exception-Queue der Klasse weitergeleitet und im Umfassenden Try-Catch-Block aufgefangen. Man kann diese auch mit Throw() nach "oben" oder an einen von außen ummantelnden Try-Block weiterwerfen.

Nothrow ist (nur Ergänzend) eine Deklarationsspezifikation von Aufrufkonventionen für Funktionen und untersagt dieser jemals eine Exception werfen zu dürfen/können in C++ wird Nothrow so dargestellt: void __stdcall foo3() throw(); (verwirrend, weil das eher wie das Werfen einer Exception aussieht).

Hier nochmal kurz verschiedene Declspecs von nothrow aus der MSDN:

#define WINAPI __declspec(nothrow) __stdcall // Trick17

void WINAPI foo1(); // ist jetzt nothrow

void __declspec(nothrow) __stdcall foo2();

void __stdcall foo3() throw();

Vielleicht gelten die auch für Borland...

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...