JsonCpp在退出函数时抛出LogicError

JsonCpp throws LogicError when exiting function

本文关键字:LogicError 函数 退出 JsonCpp      更新时间:2023-10-16

我有一段代码:

void foo()
{
std::string r = curlcall();
std::string error;
Json::CharReaderBuilder *build = new Json::CharReaderBuilder();
Json::CharReader *read = build->newCharReader();
Json::Value *root = new Json::Value();
std::cout << "parsen";
read->parse(&r.front(), &r.back() + 1, root, &error);
std::cout << "loopn";
for(auto i : *root)
{
//code that pulls info from each i
}
std::cout << "deleten";
delete root;
delete read;
delete build;
std::cout << "endn" << error << "n";
}

当我编译并运行这个程序时,它输出:

parse
loop
delete
end

然而,在这个输出之后,程序在这里崩溃,并显示消息:

terminate called after throwing an instance of 'Json::LogicError'
what():  in Json::Value::resolveReference(key, end): requires objectValue
Aborted (core dumped)

搜索了很长时间仍然找不到是什么原因导致了这个异常被抛出。我似乎也无法用try/catch捕捉到错误。

因此,事实证明im坏了,没有刷新输出流,因此我用来调试的文本消息没有打印出来,错误发生在下一个函数中。很抱歉浪费了人们的时间。