Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Zitat
Ich bin nicht der Messias.
Ich sage, du bist es, Herr. Und ich muss es wissen, denn ich bin schon einigen gefolgt.
Community-Fossil
Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer
Ich glaube das geht absichtlich nicht. Exceptions im Konstruktor fangen ist eben nicht gewollt, wenn ich mich richtig erinnere. RAII und so... das sollte von allein tun.Der Konstruktor kann ja an 2 Stellen hängen bleiben: Bei der Initialisierung der Member und bei der Ausführung des Rumpfes. Mir wäre keine Möglichkeit bekannt, Exceptions in der Initialisierungsliste zu fangen, wobei das ja im Zweifelsfalle nützlich sein könnte, um bessere Fehlermeldungen zu liefern. Vielleicht kennt da ja jemand ne Möglichkeit?
Hier sollte man beachten, dass das Objekt im Falle einer Ausnahme nicht existiert und der Destruktor nicht aufgerufen wird. Alle angeforderten Ressourcen müssen daher im Konstruktor freigegeben werden.
Ja richtig. Für bessere Fehlermeldungen gibt es durchaus die Möglichkeit von try-Blöcken in Initialisierungslisten:Ich glaube das geht absichtlich nicht. Exceptions im Konstruktor fangen ist eben nicht gewollt, wenn ich mich richtig erinnere. RAII und so... das sollte von allein tun.Der Konstruktor kann ja an 2 Stellen hängen bleiben: Bei der Initialisierung der Member und bei der Ausführung des Rumpfes. Mir wäre keine Möglichkeit bekannt, Exceptions in der Initialisierungsliste zu fangen, wobei das ja im Zweifelsfalle nützlich sein könnte, um bessere Fehlermeldungen zu liefern. Vielleicht kennt da ja jemand ne Möglichkeit?
Quellcode |
|
1 2 3 4 5 6 7 8 9 10 11 |
Foo::Foo() try : a() , b() { // Rumpf } catch(std::bad_alloc const &) { cout << "Zu wenig Speicher zur Konstruktion eines Foo" << endl; } catch(...) { cout << "irgendwas ist mit Foo schiefgegangen" << endl; } |
Werbeanzeige