devil Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
goepp Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orffi Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
devil Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Klotzkopp Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 Wie Orffi schon sagte, catch( ... ) fängt alle Exceptions. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
devil Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Orffi Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
devil Geschrieben 19. März 2002 Autor Teilen Geschrieben 19. März 2002 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Crush Geschrieben 19. März 2002 Teilen Geschrieben 19. März 2002 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... Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
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.