Przykład

Class::~Class() {
// Czyszczenie odwołań do pamięci...
int error = cleanUp();
if(error)
{
throw str;
}
logDestruction(); // Może zgłosić wyjątek
}

Rozwiązanie
Przechwyć wszystkie wyjątki, aby upewnić się, że żadne wyjątki nie opuszczą destruktora.

Class::~Class() {
try {
// Czyszczenie odwołań do pamięci
delete pointer;
logDestruction();
}
catch( ... ) {
// tutaj przechwyć wszystkie wyjątki
}
}