Я зарегистрировал три обработчика с парсером expat: - start -end - text
И из основной программы я читаю файл xml, буферизирую его и вызываю API XML_Parse. Что-то вроде этого:
try {
if( ! XML_Parse (....))
{
// throw user-defined expection here
}
catch(...)
{
}
} // end of try
catch(...)
{
}
Если XML_Parse возвращает 0 в случае ошибки, это означает, что внутри if создается исключение. И он пойман во внутреннем блоке захвата.
Вот мой вопрос: если пользовательское исключение выдается из любого из обработчиков во время синтаксического анализа, будет ли оно перехвачено внешним уловом?
Если да, то на самом деле этого не происходит в моем коде. Вместо этого он сбрасывает ядро, и стек показывает, что throw приводит к std:terminate. Должен ли я выполнять что-либо еще, прежде чем создавать исключения из HANDLERS.
Спасибо.