- Registriert
- 23.12.05
- Beiträge
- 371
Hi,
ich schreibe am Dienstag meine Abschlussprüfung im Fach Anwendungsentwicklung und bin gerade dabei, den ganzen Stoff (Structs, Classes, Pointers) nochmal zu festigen. Ansich kam ich bisher ganz gut durch. Alles läuft so, wie es soll, bis auf meine Try/Catch-Anweisungen. Vielleicht kann mir ja der ein oder andere sagen, wo mein Problem liegt.
Es sei folgende Klasse gegeben:
Die main-Funktion beinhaltet den Aufruf der Funktion append, welcher in einem Try-Block eingeschlossen ist:
Der Catch-Block soll nun diese Ausnahme auffangen:
So, und genau hier liegt das Problem. Mache ich das so, wie ich es hier aufgezeigt habe, wird mein Programm bei der Ausnahme statt mit der Meldung "DoubleArray voll!" lediglich mit
beendet.
Throwe ich jedoch mit einem beliebigen Wert
und fange alle Ausnahmen auf,
wird der Rumpf des Catch-Blocks abgearbeitet.
Wo liegt der Fehler? Wer weiß Rat?
Vielen Dank,
stoebe
ich schreibe am Dienstag meine Abschlussprüfung im Fach Anwendungsentwicklung und bin gerade dabei, den ganzen Stoff (Structs, Classes, Pointers) nochmal zu festigen. Ansich kam ich bisher ganz gut durch. Alles läuft so, wie es soll, bis auf meine Try/Catch-Anweisungen. Vielleicht kann mir ja der ein oder andere sagen, wo mein Problem liegt.
Es sei folgende Klasse gegeben:
Code:
class DoubleArray
{
void append(int Wert)
{
Zahlen[Size] = Wert;
++Size;
if (Size==Capacity) throw "\nDoubleArray voll!\n\n";
}
};
Die main-Funktion beinhaltet den Aufruf der Funktion append, welcher in einem Try-Block eingeschlossen ist:
Code:
int main()
{
try
{
while(Wert>0)
{
cout << "Wert: ";
cin >> Wert;
if (Wert!=0) Zahlen.append(Wert);
}
}
Der Catch-Block soll nun diese Ausnahme auffangen:
Code:
catch(char *str)
{
cout << str;
}
So, und genau hier liegt das Problem. Mache ich das so, wie ich es hier aufgezeigt habe, wird mein Programm bei der Ausnahme statt mit der Meldung "DoubleArray voll!" lediglich mit
Code:
terminate called after throwing an instance of 'char const*'
Abort trap
Throwe ich jedoch mit einem beliebigen Wert
Code:
throw 1;
Code:
catch(...)
{
...
}
Wo liegt der Fehler? Wer weiß Rat?
Vielen Dank,
stoebe
Zuletzt bearbeitet: