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 "&" 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 sowohlex::exception
als auchstd::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 sowohlex::exception
als auchstd::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 lieberstd::runtime_error
.
-
hustbaer schrieb:
std::exception
hat keinen vom Standard garantierten Konstruktor bei dem man einen String mitgeben könnte.
Nimm lieberstd::runtime_error
.Ok, werde ich denn wohl so machen