try ... catch



  • Hi Leute,

    Eine Frage hab ich da noch.

    Ich hab in VC++ 2005 EE von MS gelernt wie try und catch funktioniert. Wie klappt sowas bei BCB?

    Ich kenn es so:

    try
    {
    // Wenn möglich
    Befehle;
    Methode;
    etc;
    }
    catch (...) 
    {
    // Sonst bei fehler etc.
    Methode;
    Befehle;
    MSGBOX;
    }
    

    Wenn ich das so auf BCB übergebe mit (...) macht der nur Theater und wirklich ein Try kommt nicht zu stande ...

    Lieben Gruß und danke für die Antworten 🙂

    PS: Thx an Akari


  • Mod

    Hallo

    Wenn ich das so auf BCB übergebe mit (...) macht der nur Theater und wirklich ein Try kommt nicht zu stande ...

    kannst du mal Theater etwas genauer darstellen

    Mfg
    Klaus



  • Hallo

    Ja das geht im Builder genauso. Exceptions und try/catch sind Teil des C++ Standards.
    Ich kann in deinem Beispiel-Code jedenfalls kein Syntaxfehler sehen. Außerdem weiß ich auch nicht was du mit "Theater machen" meinst. Vom try wirst du jedenfalls nichts zur Laufzeit sehen, wenn dann vom catch. Natürlich must du daran denken das die IDE des Builders Exceptions so oder so intern aufpopen läßt (Gibt irgendwo in den Projektoptionen eine Möglichkeit das abzuschalten). Nichtsdestotrotz wird im laufenden Programm selber die Exception nicht angezeigt sondern deine eigene catch-Routine abgearbeitet.

    bis bald
    akari



  • KlausB schrieb:

    Hallo

    Wenn ich das so auf BCB übergebe mit (...) macht der nur Theater und wirklich ein Try kommt nicht zu stande ...

    kannst du mal Theater etwas genauer darstellen

    Mfg
    Klaus

    Klar kann ich gerne machen.

    Ich arbeite mit ACCESS Datenbanken an einer Applikation und ich wollte das die Sachen die er aus der ACCESS DB ließt in eine ComboBox einfügt. Funktioniert alles toll. Nun möchte ich aber sicherstellen, dass das Programm nicht abstürzt, wenn die DB leer oder ungültig ist etc.

    Dann hab ich zuvor ein try { reingehauen und mit } geschlossen. Danach die Catch und ne MSGBOX mit Fehler... 🙂 Und da hat er nur Theater gemacht, denn ich hab dann klugerweise die DB an sich verändert also die Werte der Spalte etc. Und er kam dann nicht auf die Catch sondern ist direkt abgestürzt (Speicherverletzung glaub ich).

    Danke allen.



  • Deine Beschreibung ist zwar immer noch irgendwie "theaterhaft".
    Generell gilt: Im Builder weden sämtliche Fehlermeldungen angezeigt, egal ob dort try/catch steht. Starte mal Dein Programm direkt, also nicht aus dem Builder heraus. Dann sollte er in den catch(...)-Teil gehen.

    Gruss



  • Hallo

    try/catch ist kein Allheilmittel sondern fängt nur Exceptions ab. Speicherzugriffsfehler werden aber nicht mit Exceptions behandelt, sondern veranlassen in den meisten Fällen Windows dein Programm abzuschießen. Das sollte auch im MS VS so sein.

    Ohne relevanten Quellcode jedenfalls können wir dazu nicht viel sagen. Solltest du mit FieldByName auf die möglichen Spalten zugreifen sollte aber auf jedenfall eine Exception kommen bei nicht vorhandenen Spalten.
    Keine Exceptions sondern Speicherfehler kommen typischerweise bei Arrayzugriffen außerhalb der gültigen Größe, bei Zugriff über Null-Pointer und bei Zugriff über Pointer ohne gültige Instanz.

    bis bald
    akari



  • Rostfrei[] schrieb:

    Deine Beschreibung ist zwar immer noch irgendwie "theaterhaft".
    Generell gilt: Im Builder weden sämtliche Fehlermeldungen angezeigt, egal ob dort try/catch steht. Starte mal Dein Programm direkt, also nicht aus dem Builder heraus. Dann sollte er in den catch(...)-Teil gehen.

    Gruss

    ahso super.

    Also kann ich keine try / catch blöcke so testen sondern nur wenns compiled ist, damit kann ich was anfangen 🙂 Thx

    PS: Ich werd gleich mal einn Code in meiner Anwendung mit try .. catch testen, wenns nicht klappt schmier ich den code nochmal hier rein 🙂



  • Hallo

    Ja Exceptions sind reine Laufzeit-Überprüfungen.

    bis bald
    akari


  • Mod

    Hallo

    Also kann ich keine try / catch blöcke so testen sondern nur wenns compiled ist, damit kann ich was anfangen 🙂 Thx

    Natuerlich kannsgt du sowas im Builder einstellen
    (dh das Verhalten ist immer gleich - keine Exceptions)

    Mfg
    Klaus


Anmelden zum Antworten