我已经用 expat 解析器注册了三个处理程序: - start -end - text
从主程序中,我读取 xml 文件,对其进行缓冲并调用 XML_Parse API。像这样的东西:
try {
if( ! XML_Parse (....))
{
// throw user-defined expection here
}
catch(...)
{
}
} // end of try
catch(...)
{
}
如果 XML_Parse 在失败时返回 0,则从内部抛出异常 if。它被内部捕获块捕获。
这是我的问题:如果在解析期间从任何处理程序中抛出用户定义的异常,那会在外部 catch 中捕获吗?
如果是,它实际上并没有发生在我的代码中。相反,它正在转储核心和堆栈显示 throw 导致 std:terminate。在从 HANDLERS 抛出异常之前,我是否必须执行其他任何操作。
谢谢。