在C ++中选择错误的文件时,防止boost xml分析器崩溃

时间:2018-10-17 08:49:34

标签: c++ xml qt boost

我有一个工具,用户可以通过Qt Gui选择xml来设置一些参数。问题是。当该文件不是有效的xml文件时,我的工具就会崩溃。我在Qt Creator中收到以下错误:

terminate called after throwing an instance of 'boost::exception_detail::clone_impl<boost::exception_detail::error_info_injector<boost::property_tree::xml_parser::xml_parser_error> >'
what():  /home/path/to/Executable: expected <
10:40:44: The program has unexpectedly finished.

我可以检查XML是否有效,还是可以捕获错误并执行其他操作而不是终止?

我想显示一条错误消息并取消解析。

我的阅读过程代码为:

#include <boost/property_tree/xml_parser.hpp>
#include <boost/property_tree/ptree.hpp>
...
using boost::property_tree::ptree;
ptree pt;
read_xml(filename, pt);

1 个答案:

答案 0 :(得分:1)

根据documentation read_xml会在发生错误的情况下抛出xml_parser_error,因此只需捕获它即可。