退出功能时,JsonCpp抛出LogicError

时间:2018-07-30 13:17:06

标签: c++ jsoncpp

我有这段代码:

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 << "parse\n";
    read->parse(&r.front(), &r.back() + 1, root, &error);
    std::cout << "loop\n";
    for(auto i : *root)
    {
        //code that pulls info from each i
    }
    std::cout << "delete\n";
    delete root;
    delete read;
    delete build;
    std::cout << "end\n" << 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来捕获错误。

1 个答案:

答案 0 :(得分:0)

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