2011-05-10 84 views
4

我使用boost图库处理图形。 我使用boost :: serialization将我的图形写入文件。反序列化中的文件损坏,如何防止崩溃?

为了测试目的,我修改了文件的完整性。现在我的程序一直在崩溃。 我想知道是否有任何方法来防止崩溃(boost :: serialization不会抛出异常)。

更一般而言,对于任何类型的文件,在解析中没有任何异常,所有的都应该是正确的,有没有办法呢?

也许唯一的解决方案是编写自定义序列化/反序列化函数与异常处理?

谢谢!

编辑:当所有数据损坏或文件丢失时,有一个boost :: archive :: archive_exception。但如果只有文件的某些部分发生了变化,它会崩溃...

Edit2:我应该捕获input_stream_error异常,但我不知道。

+0

据我所知,在任何情况下,自定义序列化/反序列化函数都是必需的,唯一的选择是将其放入类本身还是放入'boost :: serialization'命名空间。你可以在没有必要的地方发布示例代码吗? – Oswald 2011-05-10 10:54:13

+0

使用BGL提出的图形序列化的整个想法不是编写自定义函数。 我的数据结构非常简单:只有1个int用于Node,1个double和1个int用于Edge。 – Kikohs 2011-05-10 11:06:52

+0

对不起,我没有意识到你在使用BGL。我以为你自己在实现一个图库。 – Oswald 2011-05-10 11:19:36

回答

1

A boost::archive_exception也会抛出其他情况,而不是整个数据损坏或丢失的文件。详情请参阅Archive Exceptions

+0

我不明白,应该是“input_stream_error”异常。 – Kikohs 2011-05-10 11:07:54