Nun, wenn beim Wurf eine EX kein Fehlertext übergeben wird, muss er ja statisch sein. Denn er muss ja irgendwo herkommen. Du übergibst mit throw DivisionDurch0; lediglich den Namen einer Klasse.
Mit throw std::Rechenfehler("Division durch null!") hingegen ist die Sache klar.