Большинство людей использовали std::uncaught_exception()
, чтобы попытаться определить, ожидает ли исключение исключение, поэтому они могут вызвать исключение из деструктора, если его еще нет.Обычно это считается плохой идеей.
Если вы не хотите отменять операцию, если было сгенерировано исключение, это должно сработать.
Помните, что деструктор - ваш последний шансосвободить любые ресурсы, которые имеет объект, потому что после завершения деструктора объект не существует, и любые ресурсы, которые он содержал, теперь постоянно пропускаются.Если OpDo()
выделяет какую-либо память, дескрипторы файла или что-то еще, вам нужно разобраться с этим в деструкторе, несмотря ни на что.