[Borland C++ Builder] Problem mit Exception

Servus,
ich habe ein problem mit einer Exception-Abfrage. Folgender Code:

 try{
 this-\>setzeTermin(StrToDate(termin));
 return true;
 }catch(EConvertError &e){
 return false;
 }catch(...){
 return false;
 }

„termine“ wird von einem Edit-Textfeld übergeben. Sobald ich jetzt einen ungültigen Wert eingebe, müsste doch die Exceptionabfrage greifen und in den Catch-Block (EConvertError) springen. Das funktioniert aber nicht. Bei „this->setzeTermin(StrToDate(termin));“ kommt sofort eine Fehlermeldung „Im Projekt … ist eine Exception der Klasse…“ und es wird danach „true“ zurück gegeben.

Kann mir jemand helfen und sagen, warum bei einer Exception nicht in den „catch“-Blöcken weitergemacht wird? Muss ich irgendne Einstellung ändern?

gruss Markus

„termine“ wird von einem Edit-Textfeld übergeben. Sobald ich
jetzt einen ungültigen Wert eingebe, müsste doch die
Exceptionabfrage greifen und in den Catch-Block
(EConvertError) springen. Das funktioniert aber nicht. Bei
„this->setzeTermin(StrToDate(termin));“ kommt sofort eine
Fehlermeldung „Im Projekt … ist eine Exception der
Klasse…“ und es wird danach „true“ zurück gegeben.

Kann mir jemand helfen und sagen, warum bei einer Exception
nicht in den „catch“-Blöcken weitergemacht wird? Muss ich
irgendne Einstellung ändern?

gruss Markus

Hi,

geh mal unter „Tools“>„Debugger-Optionen“>„Sprach-Exeptions“ und mach ganz unten das Häckchen „Bei C++ Exceptions stoppen“ weg! Dann werden deine eigenen Exceptions verwendet, ansonsten werden sie von der Programmierumgebung abgefangen!!!

Ich weiß net wie das in C++ is, aber ich würd sagen du hast sowieso nen Fehler in deinem Code. Muß es net Termin->Text heißen, damit du auf den Wert in der Editbox zugreifen kannst?! Aber das nur als Anmerkung…

Mfg

JENS

ups…
vergiss meine Anmerkung, hast ja geschrieben, dass du den Wert schon vorher übergeben hast…

Ich werde noch verrückt.

geh mal unter
„Tools“>„Debugger-Optionen“>„Sprach-Exeptions“ und mach
ganz unten das Häckchen „Bei C++ Exceptions stoppen“ weg! Dann
werden deine eigenen Exceptions verwendet, ansonsten werden
sie von der Programmierumgebung abgefangen!!!

Danke erst einmal für den Tipp. Habe das Häkchen jetzt deaktiviert. Jetzt kommt immerhin ein normales Meldungsfenster mit dem Titel
„prj_meldung“ (mein Projektname)
und dem Text
„‚xyz‘ ist kein gültiges Datum“ (wobei ‚xyz‘ die Eingabe meines Textfeldes ist)

In den Catch-Block geht er aber trotzdem nicht rein! Ich habe nämlich ein ganz anderes Meldungsfenster vorgesehen, das aber niemals erreicht wird. Das ist irgendwein internes Meldungsfenster der Exception, oder weiß der Geier woher?!

Ich weiß nicht, aber kann denn das so umständlich sein ein Exception-Handling in Borland C++ zu implementieren. Also da habe ich wirklich schon intuitivere und vor allem komfortable Entwicklungsumgebungen gesehen!

Hoffe mir kann irgendjemand helfen.

gruss Markus

hast du mal step-by-step debugged und geguckt, ob diese Fehlermeldung gleich kommt, oder ob dein Programm deine Routine aufgerufen hat und danach trotzdem den Fehler gebracht hat?

mfg - jens

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]