【问题标题】:File corruption in de-serialization, how to prevent a crash?反序列化中的文件损坏,如何防止崩溃?
【发布时间】: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


【解决方案1】:

boost::archive_exception 也会在其他情况下抛出,而不是整个数据损坏或文件丢失。有关详细信息,请参阅Archive Exceptions

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-30
    • 1970-01-01
    • 2014-07-21
    • 1970-01-01
    相关资源
    最近更新 更多