尝试获取不存在的节点时如何没有任何错误

时间:2017-04-27 13:02:53

标签: c++ boost boost-propertytree

有人知道什么样的异常会在“try”中返回以下代码吗? 我尝试使用3种“捕获(异常)”,似乎没有人工作。

try
{
    std::cout << "try to get not existing path" << std::endl;
    std::string path = this->m_Tree.get<std::string>(PATH);
}
catch (const boost::property_tree::ptree_bad_path& e)
{
    std::cout << "ptree_bad_path" << std::endl;
}

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

查看文档:

  

获取数据的三种方式

     

有三个版本的get:get,get(默认值版本)和get_optional,它们因故障处理策略而异。所有版本都采用路径说明符,它确定搜索值的键。它可以是单个键,也可以是键的路径,其中路径元素用特殊字符分隔(如果没有另外指定,则为&#39;。)。例如,debug.logging.errorlevel可能是一个有效的路径,其中dot作为分隔符。

所以,只需使用get_optional<std::string>我就说

ptree pt;
/* ... */
boost::optional<float> v = pt.get_optional<float>("a.path.to.float.value");