Ejemplo

Class::~Class() {
// Limpie las referencias en la memoria ...
int error = cleanUp();
if(error)
{
throw str;
}
logDestruction(); // Puede generar una excepción
}

Solución
Asegúrese de que ninguna excepción abandone el destructor capturando todas las excepciones.

Class::~Class() {
try {
// Limpie las referencias en la memoria
delete pointer;
logDestruction();
}
catch( ... ) {
// capture aquí todos los errores
}
}