Frage zu try catch

wolf_10de

Grünschnabel
Hallo,
wenn ich mit
Code:
try
    {
        this->Picture->LoadFromFile(filename);
    }
    catch(...)
    {
        MessageBeep(0);
        return false;
    }
versuche den Fehler abzufangen der auftreten kann wenn 'filename' ungültig ist, warum krieg ich dann trotzdem ne Fehlermeldung:

---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt sdiapp.exe ist eine Exception der Klasse EFOpenError aufgetreten. Meldung: 'Datei .//tiles//mysets\**000.bmp kann nicht geöffnet werden'. Prozeß wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------
 
ich glaub du musst "bei exceptions anhalten" oder so ausmachen...vielleicht funzts dann ja
ansonsten halt die exe starten
 
hallo!
hab da auch mal ne frage zu exceptions:
Hier erstmal Code:

Code:
 try
             {
                   while (j<laenge)
                        {
                               if (tmp[j]>=41&&tmp[j]<=90)
                               {
                               throw "error";
                               };    
                        j++;
                        };
             }
             
             catch (char * str)
                   {
                   cout<<str<<endl;
                   system("pause");
                   }
Meine Frage: Der springt bei nem Fehler sofort aus dem Programm, das ist sofort weg.
Kann man da nicht was anders machen?
Ich dachte er springt nur aus der Funktion, und ich habs aus ner Funktion heraus aufgerufen.
Und mein "main" ruft in ner Schleife immer ein Menü auf in dem man verschiedene Funktionen wählen kann. Dann sprigts wegen der Schleife zurück. das geht so weiter bis man das Prog beendet.
Und der soll bei ner Exceptioon halt nur zurückspringen.
 
Zuletzt bearbeitet:
Deiner Darstellung entnehme ich, dass die Exception vom Debugger abgefangen wird. Wenn dieses so ist, unter Tools/Debugger Options/OS Options "Handled by User Program" und "on resume" Run unhandled einschalten.
Nur noch mal zur Ernnerung : Nicht alle Methoden werfen im Fehlerfall eine Exception. Sondern geben als Fehler false zurück. Auch wenn man z.B. Memory überschreibt, ist nicht mit einer Exception zu rechnen.

Gruß
Gerhard
 
Zurück