首页 > 解决方案 > 退出函数时 JsonCpp 抛出 LogicError

问题描述

我有这段代码:

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

标签: c++jsoncpp

解决方案


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


推荐阅读