- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
class cSG5DataException ... {
cSG5DataException(CTstatus Status, CTsymbol Error,
CTsymbol SubError, std::string Description, ...)
{
/* форматирование сообщения */
}
/* виртуальный деструктор наличиствует */
};
class cExcKVSDuplicateKey : public cSG5DataException {
/* пусто */
};
/* код */
throw (cExcKVSDuplicateKey*) new cSG5DataException( CT_statusFail,
CT_errorObjectExists,
CT_errorObjectExists,
"cKVSet_STL_map::insert( CTint k, Value& v ), %d is already in the map",k);
FadedInto 15.02.2011 10:58 # 0
Dummy00001 15.02.2011 13:26 # 0
[code=c++]
try {
sectionBlock->insert(KeysK, *section);
} catch (cExcKVSDuplicateKey* eKvset) {
delete eKvset;
throw new cSG5DataException(CT_statusFail,
CT_errorSystem,
CT_errorSystem,
"Config->GetAll: Error during insert section pointer into kvset."
"\n file: %s", m_file->getName().c_str()
);
}
[code]
Вот тот `delete eKvset;` тоже говно уже само по себе. бросить new'ed эксепшн из тривиальной функции, словить его, delete его, и new'кнуть новый почти такой же эксепшн и его еще раз бросить.
RFC1925, пункт 6а рулит.