- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
// Найдено глубоко в продакшн-коде некоего транслятора:
HRESULT hr = S_OK;
try {
hr = ParseSection(sourceTemplate, output, CS_IF);
}
CATCH_CG_EXCEPTION(this, hr)
CATCH_CG_EXCEPTION_END
// далее смотрим определения этих чудо-макросов
#define CATCH_CG_EXCEPTION(gen, hr) \
catch (CHierCGException* e) { \
(gen)->WriteExceptionMessage(e); \
if (e->m_bContinue) { \
if (e->m_useHRESULT) hr = e->m_hResult; else hr = E_FAIL; \
} \
delete e; \
if (!(e->m_bContinue))
#define CATCH_CG_EXCEPTION_END \
throw; \
}