Product* p = new Product(); if (p->read()) { ... } delete p; // never executes if read throws an exception