son cresciuto con questo dogma: "non scrivere mai un costruttore o un distruttore che possano sollevare eccezioni"
non mi sembra una cosa stupida: ad esempio se abbiamo un distruttore che esegue molte operazioni e la prima di queste solleva un'eccezione, che succede alle operazioni successive? non vengono eseguite, ma quindi si avrebbero dei leack di memoria (nell'ipotesi migliore...)
stessa cosa in un costruttore: la new può fallire ed è buona norma verificare il risultato di ogni new immediatamente dopo averla eseguita, ma qual è il comportamento migliore da tenere in questi casi? una throw all'interno del costruttore è contrario alla regoletta sopra, ma non posso sicuramente tenermi un oggetto "con dei problemi"
quindi mi sorge la domanda: è il dogma sbagliato (o troppo rigido) o mi sfugge qualcosa?