std::exception
-
Hi,
kann ich mit einer std::exception einen int + char* werfen? Ich frage das weil VS mir sowas anbietet:
throw std::exception("Fehler", 42);Ich aber gar nicht wüsste wie ich dann auf die Zahl zugreifen soll? Ich kenne nur std::exception::what().
Also falls das geht wie kann ich dadrauf zugreifen und falls es nicht geht was macht die Zahl da im Konstruktor?Besten Dank im voraus

-
Ist ne etwas dumme Loesung von MS.
Wenn du den Ctor mit char* und int aufrufst, dann allokiert die exception keinen Speicher - was zB wichtig ist wenn ein bad_alloc fliegt
Die Idee ist also super, die ausfuehrung nicht so.Der wert des ints ist uebrigens egal.
PS:
der standard kennt diesen ctor natuerlich nicht.
-
nein, das geht nicht. Aus dem Standardentwurf:
class exception { public: exception() throw() noexcept; exception(const exception&) throw() noexcept; exception& operator=(const exception&) throw() noexcept; virtual ~exception() throw(); virtual const char* what() const throw() noexcept; };Die Klasse hat keinen Konstruktor, der das könnte.
Allerdings kann dem Konstruktor der Klasseruntime_exception(u.a.) ein String übergeben werden, aber auch nicht "string, int"
Wenn VC das anbietet - ok. Aber portabel ist es nicht.
-
Ok, danke. Dann muss ich mir eben was eigenes basteln
