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
}
}