我使用boost图库处理图形。 我使用boost :: serialization将我的图形写入文件。反序列化中的文件损坏,如何防止崩溃?
为了测试目的,我修改了文件的完整性。现在我的程序一直在崩溃。 我想知道是否有任何方法来防止崩溃(boost :: serialization不会抛出异常)。
更一般而言,对于任何类型的文件,在解析中没有任何异常,所有的都应该是正确的,有没有办法呢?
也许唯一的解决方案是编写自定义序列化/反序列化函数与异常处理?
谢谢!
编辑:当所有数据损坏或文件丢失时,有一个boost :: archive :: archive_exception。但如果只有文件的某些部分发生了变化,它会崩溃...
Edit2:我应该捕获input_stream_error异常,但我不知道。
据我所知,在任何情况下,自定义序列化/反序列化函数都是必需的,唯一的选择是将其放入类本身还是放入'boost :: serialization'命名空间。你可以在没有必要的地方发布示例代码吗? – Oswald 2011-05-10 10:54:13
使用BGL提出的图形序列化的整个想法不是编写自定义函数。 我的数据结构非常简单:只有1个int用于Node,1个double和1个int用于Edge。 – Kikohs 2011-05-10 11:06:52
对不起,我没有意识到你在使用BGL。我以为你自己在实现一个图库。 – Oswald 2011-05-10 11:19:36