我有以下情況。捕捉提升序列化歸檔例外
這是一個代碼片段,經過編輯以演示該問題。
ifstream ifs("empty_file");
if(!ifs.is_open()) {
ui.display("Error: Unable to open file \"empty_file\"\n");
return;
}
archive::text_iarchive ia(ifs);
try {
ia >> some_class;
} catch (...) {
ui.display("This should catch ever single exception\n");
}
empty_file確實是一個完全空的文件。這應該會導致錯誤;它確實如此。問題是我無法捕獲boost引發的異常,並濫用用戶關於給我一個空的/損壞的文件加載。
相反,我得到如下:
Loading...
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): invalid signature
Aborted
據我所知,趕上(...)應該抓住每一個例外存在。我做錯了什麼,或者是boost :: serialization在我有機會做任何事情之前僅僅捕獲它自己的異常並中止()?
如果後者是這種情況,那麼它只是我還是那個非常糟糕的設計?您的整個程序不應該從損壞的加載文件中崩潰(中止())。我能做些什麼呢?
Ahem。我只是假裝我不是那麼愚蠢的...... *吹口哨*。 另外,很抱歉;但我不能將你的答案標記爲接受另外三分鐘。 編輯:是的,這是我有第一個catch語句,但正如我在問題中所說的,代碼被彎成不臃腫但仍然表現出我的問題(白癡)。 – Infiltrator 2011-05-09 17:04:53
@Tim:我會假裝我從未犯過類似的錯誤。 ; v)的 – 2011-05-09 17:06:38