有人知道什么样的异常会在“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;
}
感谢您的帮助。
答案 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");