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