Amin Negm-Awad schrieb:
Es gibt ja noch den umgekehrten Fall der Exception während einer Objektkonstuktion, bei der bereits Objekte konstruiert wurden. In C++ muss man AFAIK alle Exceptions fangen, wenn das Stack-Unwinding funktionieren soll. zermelo weiß sicherlich Genaueres.
Ich weiss nicht genau, was Du meinst, hab den Thread aber zugegebenermassen nur überflogen (weil ich mir dachte, wie schön es ist, solche Probleme in C++ dank RAII nicht zu haben). Exceptions bei der Konstruktion sind aber, sofern man RAII beachtet, natürlich auch kein Problem, und man braucht im c'tor auch nichts zu fangen damit das korrekt funktioniert.
Amin Negm-Awad schrieb:
Ich weiß jetzt nicht aus dem Effeff, ob fclose() eine Exception werfen kann, mutmaße es aber. Stellen wir uns das mal vor.
fclose() ist C. Das wirft nichts?
Amin Negm-Awad schrieb:
Jetzt wird das Objekt möglicherweise dekonstruiert, weil eine Exception geflogen kam. Dann kann die Dekonstruktion jetzt wieder eine Exception werfen. Die muss ich fangen.
Eine der wenigen tatsächlich notwendigen Konventionen in C++ verbietet das Werfen von Exceptions im Destruktor. Jeder ordentlich C++ Programmierer hält sich dadran und es ist mir tatsächlich noch nie etwas Gegenteiliges untergekommen (Code, der das macht, kann man gleich aussortieren. Da wird auch sonst nichts brauchbares drin sein).
♥C++