YoutubeLoader No. 7342 < Jetzt mit GUI :) >



  • Vielen Dank für dein Feedback, freut mich dass das Ganze so gut ankommt!
    Allerdings muss ich zugeben dass ich nicht mal wirklich damit gerechnet hatte dass die Klasse jemand nutzt - ich werde also mal eben die Nachrichten dokumentieren.

    --
    Ein Bug hat die Klasse auch noch:
    Wenn im Videotitel ein "&" steht wird dieses als "&amp" geschickt. Das muss ich noch aus dem Titel schneiden 😉



  • Das funktioniert ja wunderbar - vielen Dank für deine Arbeit!



  • püsh 🙂



  • Der Member m_what muss vom Typ std::string und nicht vom Typ const char* sein.

    Noch besser wäre std::shared_ptr<std::string> .
    Exceptions sollten immer no-throw kopierbar sein.



  • hustbaer schrieb:

    Der Member m_what muss vom Typ std::string und nicht vom Typ const char* sein.

    Noch besser wäre std::shared_ptr<std::string> .
    Exceptions sollten immer no-throw kopierbar sein.

    Wie gesagt, das ist der alte Post. Ich habe mich zwischenzeitlich dazu entschieden einfach std::exception zu kapseln; die aktuelle exception Klasse sieht also so aus:

    namespace ex
    {
      class exception
      {
      public:
        exception(const char* what, int ex_id);
        const char* what();
        int error();
        const std::exception m_exception;
        const int m_ex_id;
      };
    }
    

    Ich bin mir nicht ganz sicher was "no-throw kopierbar" heißt, bin aber immer offen für hilfreiche Links!



  • Ich habe mich zwischenzeitlich dazu entschieden einfach std::exception zu kapseln;

    std::exception ist eigentlich zur Vererbung gedacht ( std::exception::what() ist virtual), sodass es reicht die Basisklasse zu fangen. Natürlich geht dein Ansatz auch, aber dann muss der Benutzer sowohl ex::exception als auch std::exception fangen.

    Ich bin mir nicht ganz sicher was "no-throw kopierbar" heißt, bin aber immer offen für hilfreiche Links!

    no-throw kopierbar heißt einfach, dass beim Kopieren eines Exception Objekts keine Exception fliegt. Aus diesem Grund ist es keine gute Idee einen std::string als Member zu haben, da dieser beim Kopieren werfen kann.



  • Guybrush™ schrieb:

    Ich habe mich zwischenzeitlich dazu entschieden einfach std::exception zu kapseln;

    std::exception ist eigentlich zur Vererbung gedacht ( std::exception::what() ist virtual), sodass es reicht die Basisklasse zu fangen. Natürlich geht dein Ansatz auch, aber dann muss der Benutzer sowohl ex::exception als auch std::exception fangen.

    Ich bin mir nicht ganz sicher was "no-throw kopierbar" heißt, bin aber immer offen für hilfreiche Links!

    no-throw kopierbar heißt einfach, dass beim Kopieren eines Exception Objekts keine Exception fliegt. Aus diesem Grund ist es keine gute Idee einen std::string als Member zu haben, da dieser beim Kopieren werfen kann.

    Dass man ex::exception und std::exception fangen muss finde ich eigentlich gar nicht schlecht, wird so eine std::exception geworfen weiß man das irgendetwas ziemlich schief läuft 🙂

    Ah ok, dann sollte das kopier Zeug mit std::exception ja geregelt sein, danke!



  • cooky451 schrieb:

    Dass man ex::exception und std::exception fangen muss finde ich eigentlich gar nicht schlecht, wird so eine std::exception geworfen weiß man das irgendetwas ziemlich schief läuft 🙂

    das kannst du doch auch mit Vererbung erreichen

    try {
       ...
    } catch (myexception &e) {
       ...
    } catch (std::exception &e) {
       // PANIC
    }
    


  • std::exception hat keinen vom Standard garantierten Konstruktor bei dem man einen String mitgeben könnte.
    Nimm lieber std::runtime_error .



  • hustbaer schrieb:

    std::exception hat keinen vom Standard garantierten Konstruktor bei dem man einen String mitgeben könnte.
    Nimm lieber std::runtime_error .

    Ok, werde ich denn wohl so machen 🙂


Anmelden zum Antworten