En el "núcleo" de hacer frente a las excepciones es que prácticamente todo se debe limpiar a través de destructores. Por ejemplo, si "nuevo" un objeto obtienes un puntero "en bruto"; si se lanza una excepción en alguna parte, debe asegurarse de que este puntero sin formato esté correctamente "eliminado" d, pero asegúrese de no eliminar un puntero sin procesar que no se haya inicializado.
Por otro lado, si almacena ese puntero en std :: unique_ptr, no tiene que hacer nada; cuando se destruye el unique_ptr el objeto se elimina y la destrucción de objetos ocurre automáticamente: cuando el unique_ptr sale del alcance, el compilador invoca la limpieza, completamente invisible (por lo que no hay más desorden de código con toneladas de llamadas de limpieza) y automáticamente (por lo no más 'ouch, cuando se necesita ese camino raro que nadie realmente probó se olvida de la limpieza').
Lo mismo se puede aplicar a casi todos los recursos; hay "punteros automáticos" para objetos COM (como los utilizados en DirectX, por ejemplo), la mayoría de los marcos deberían darle un objeto tipo "cerradura de ámbito" para envolver mutexes (por lo que bloquea el mutex cuando se crea el objeto, y lo desbloquea cuando está destruido), y puede escribir pequeños envoltorios para manejar varios identificadores de Windows.
Básicamente, si pones toda tu limpieza en destructores, nunca tendrás que "intentar ... coger ... volver a tirar" solo para limpiar. Y los destructores de objetos "más grandes" a menudo serán muy simples, ya que prácticamente todos los objetos "contenidos" son limpiados automáticamente por sus destructores.
¿Qué tal enlace, que Als le da aquí http://stackoverflow.com/questions/12723492/how-to-clean-initialized-resources-if-exception-thrown-from-constructor-in-c? ¿Este miembro miembros se opone? – ForEveR
¿Qué manejo necesitas? Normalmente, simplemente permitiría que la excepción se propagara, de modo que los primeros 5 objetos se destruyan limpiamente. Algún contexto más sería útil – jalf
RAII. (Http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization) – ScaryAardvark