【发布时间】:2011-05-10 09:58:12
【问题描述】:
我正在使用 boost 图形库来处理图形。 我使用 boost::serialization 将我的图表写入文件。
出于测试目的,我修改了文件的完整性。现在我的程序一直崩溃。 我想知道有什么办法可以防止崩溃(boost::serialization 不会抛出异常)。
更一般地,对于任何类型的文件,在解析中没有抛出异常,所有都应该是正确的,有没有办法呢?
也许唯一的解决方案是编写带有异常处理的自定义序列化/反序列化函数?
谢谢!
编辑:当所有数据损坏或文件丢失时,会出现 boost::archive::archive_exception。但是如果只更改文件的某些部分,它就会崩溃......
Edit2:我应该捕捉到 input_stream_error 异常,但我没有。
【问题讨论】:
-
据我所知,自定义序列化/反序列化函数在任何情况下都是强制性的,唯一的选择是将其放入类本身还是放入
boost::serialization命名空间。您可以在不需要的地方发布示例代码吗? -
使用 BGL 提出的图序列化的整个想法不是编写自定义函数。我的数据结构非常简单:只有 1 个 int 用于 Node 和 1 个 double 和 1 个 int 用于 Edge 的结构。
-
对不起,我没有意识到您正在使用 BGL。我以为你自己在实现一个图形库。
标签: c++ serialization boost crash