我尝试在Poco中级联异常。
void debug() {
try {
...
xmlFile.parseDocument(*_sim);
...
}
} catch (Poco::Exception& error) {
std::cout << "I'm here" << endl;
std::cout << "Error : " << error.displayText() << std::endl;
}
}
void XMLParser::parseDocument(Manager &manager) {
...
try {
Poco::XML::NodeList* policyList = root->childNodes();
for (uint node=0; node < policyList->length(); node++)
if (policyList->item(node)->hasChildNodes())
manager.insertRule(parseRule(node, policyList->item(node)));
} catch(Poco::Exception& error) {
std::cout << "Error : " << error.displayText() << std::endl;
error.rethrow();
}
}
Rule* XMLParser::parseRule(int flowID, Poco::XML::Node* rule) throw() {
....
if (tLink._srcPort < 0)
throw new Poco::Exception("Source Port isn't valid");
....
}抛出最深的异常,但它不会继续外部函数。该程序被终止。为什么?
发布于 2015-06-15 16:25:19
你抛出一个Poco::Exception指针,所以你不能通过引用来捕获它。删除“new”。这应该是可行的:
....
if (tLink._srcPort < 0)
throw Poco::Exception("Source Port isn't valid");
....https://stackoverflow.com/questions/25564990
复制相似问题