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 Klasse runtime_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 😃


Anmelden zum Antworten