2011-05-10 81 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