Moin,
Nun, wenn beim Wurf eine EX kein Fehlertext übergeben wird, muss er ja statisch sein. Denn er muss ja irgendwo herkommen.
Nein, mein „Rechen“-Beispiel kommt ohne Fehlertext aus – mindestens im zweiten Fall. Da ist es auch vollkommen egal, ob der Compiler intern die Klassen anders bezeichnet („Name Mangling“).
Du übergibst mit
throw DivisionDurch0;
lediglich den Namen einer Klasse.
Nein, es wird ein Objekt dieser Klasse erzeugt.
Mit
throw std::Rechenfehler("Division durch null!")
hingegen ist die Sache klar.
… solange man
- der deutschen Sprache mächtig ist,
- keine Exceptionhierarchien nutzen möchte
- und Performance für irrelevant hält:
- In deinem Fall werden mindestens 21 Byte und ein Stringvergleich benötigt.
- In meinem Fall wird 1 Byte und ein Typvergleich – das kann auch über einen Typcode laufen – benötigt.
Viele Grüße
Robert