Che
2003-07-09, 20:00:09
Hi mal wieder!
An diese Sachen hab ich mich also auch herangewagt und auch schon die ersten Fragen dazu :)
Ich habe eine Klasse Exception und eine davon abgleitete, ExDivByZero. (Jaja, das Anfängerbeispiel...) Mit einer virtuellen Funktion display, die jeweils die Fehlermeldung ausgibt und den Namen der Klasse, damit man die zwei virtuellen auseinanderkennt.
Eine schöne Tesfunktion habe ich auch, dabei wird ein int x durch einen int y dividiert. (Ist das nicht schön? ;):D)
Exception wird geworfen wenn y==5, ExDivByZero natürlich wenn y==0.
In main wird gefangen:
catch (CException ex)
{
ex.display();
}
Hier erscheint bei Display immer Eception als Klassenname.
catch (CException &ex)
{
ex.display();
}
Hier erscheint bei y==0 ExDivByZero als Klassenname, sonst Exception.
Warum dieses? Was hat die Art und Weise wie ich fange (als Referenz oder nicht) damit zu tun? Meine Vermutung: Ohne Referenz ist so wie Call-by-Value: Ein neues Exception Objekt wird angelegt, welches natürlich IMMER vom Typ Exception ist. Und was passiert dann mit Referenz?
Ich bin sehr daran interessiert was hier im Hintergrund abläuft.
MfG
An diese Sachen hab ich mich also auch herangewagt und auch schon die ersten Fragen dazu :)
Ich habe eine Klasse Exception und eine davon abgleitete, ExDivByZero. (Jaja, das Anfängerbeispiel...) Mit einer virtuellen Funktion display, die jeweils die Fehlermeldung ausgibt und den Namen der Klasse, damit man die zwei virtuellen auseinanderkennt.
Eine schöne Tesfunktion habe ich auch, dabei wird ein int x durch einen int y dividiert. (Ist das nicht schön? ;):D)
Exception wird geworfen wenn y==5, ExDivByZero natürlich wenn y==0.
In main wird gefangen:
catch (CException ex)
{
ex.display();
}
Hier erscheint bei Display immer Eception als Klassenname.
catch (CException &ex)
{
ex.display();
}
Hier erscheint bei y==0 ExDivByZero als Klassenname, sonst Exception.
Warum dieses? Was hat die Art und Weise wie ich fange (als Referenz oder nicht) damit zu tun? Meine Vermutung: Ohne Referenz ist so wie Call-by-Value: Ein neues Exception Objekt wird angelegt, welches natürlich IMMER vom Typ Exception ist. Und was passiert dann mit Referenz?
Ich bin sehr daran interessiert was hier im Hintergrund abläuft.
MfG