2009-01-19 11 views

Respuesta

7

No le impide lanzar excepciones desde su destructor. El compilador aún te permitirá hacerlo. La diferencia es que si permites que una excepción escape de ese destructor, tu programa llamará inmediatamente al unexpected. Esa función llama a cualquier punto unexpected_handler, que por defecto es terminate. Entonces, a menos que haga algo para manejar una excepción inesperada, su programa finalizará, lo cual no es del todo una mala idea. Después de todo, si la excepción es realmente inesperada, en realidad no hay nada que tu programa pueda hacer para manejarlo de todos modos.

Esto no es algo especial acerca de los destructores; las mismas reglas se aplican a las especificaciones de excepción para todos los métodos.

3

No es una idea horrible. Si arrojas el dtor mientras no se propaga ninguna excepción, abortarás inmediatamente, lo que te permite saber que has olvidado crear un dtor real que no arroje.

Si, por otro lado, dejas la especificación de lanzamiento, solo sabrás sobre tu mala implementación dtor cuando, de hecho, se produce una excepción.

Cuestiones relacionadas