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

标签 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);

最佳答案

根据documentation read_xml 会在发生错误时抛出一个 xml_parser_error,因此只需捕获它即可。

关于c++ - 在 C++ 中选择错误的文件时防止 boost xml 解析器崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52850815/

相关文章:

javascript - Qt:如何从 qscriptengine 传递数组或字典?

C++:从单个 std::stringstream 转换多个命令行参数

javascript - 在 Gecko 中从字符串创建文档

node.js - 我可以使用 XML 创建 REST API 作为响应吗?

java - Spring Web XML 不尊重 Java11 中的 XmlRootElement

c++ - QWidget keyPressEvent 覆盖

qt - 如何将 QGraphicsView 锚定到场景上的特殊点?

c++ - VNC 查看器实现

C++ lambda 的三元赋值

c++ - 你能推荐具有良好突出显示自定义的文本编辑器(linux)吗?