Не делайте этого, если у вас нет веских причин . Раскрутка стека - это такая языковая особенность, что все автоматические объекты внутри блока try
будут принудительно освобождены, чтобы у ресурсов внутри них была возможность освободиться.
Вы хотите пропустить очистку в dtor во время разматывания стека, что обходит первоначальное намерение. И вы рискуете вытечь ресурсы.
Пример
class CDBConnection
{
public:
CDBConnection()
{
m_db.open();
}
~CDBConnection()
{
if (!std::uncaught_exception())
m_db.close();
// if this is called during a stack unwinding,
// your DB connection will not be closed for sure.
// That's a resource leakage.
}
//..
private:
DB m_db;
};
void main()
{
//..
try
{
// code that may throw
CDBConnection db;
//..
}
catch(const CDBException& exp)
{
// properly handle the exception
}
}