На вопрос, как нужно выбрасывать исключения, есть два мнения:
1) throw CMyException(...)
2) throw new CMyException(...)
И то и то работает. Но во втоом случае приходится явно удалять экземпляр исключения в секции catch:
try {
...
throw new CMyException(...);
} catch(CMyException *exc)
{
...
delete exc; // Ну или там в большинстве случаев — exc->Delete(), которая вызывает delete this;
}
Второй подход вроде как хуже из-за дополнительной необходимости удалять исключение. Или это фича?