Exemplo

Class::~Class() {
// Limpe referências à memória ...
int error = cleanUp();
if(error)
{
throw str;
}
logDestruction(); // Pode emitir exceção
}

Solução
Verifique se nenhuma exceção deixa o destrutor capturando todas as exceções.

Class::~Class() {
try {
// Limpe referências à memória
delete pointer;
logDestruction();
}
catch( ... ) {
// capture todos os erros aqui
}
}