2013-08-23 102 views
0

嗨我寫了一些代碼,它將一些對象序列化爲xml,然後嘗試從文件反序列化它。這已經工作,但突然我得到一個如何獲得有關boost :: xml_archive異常的更多信息

terminate called after throwing an instance of 'boost::archive::archive_exception' 
    what(): input stream error 

所以我想我一定是什麼地方做了重大更改。問題是增強不給我任何更多的信息,有沒有什麼辦法(可能是編譯器標誌?)獲得有關錯誤的更多信息?

我使用G ++,並提高v1.46

+0

...大概輸出流參數有某種問題。如果真的想知道發生了什麼,可以在調試模式下編譯這兩個文件(程序和boost),然後檢查發生了什麼... –

+0

您是否閱讀過[**文檔**](http:// www。 boost.org/doc/libs/1_54_0/libs/serialization/doc/exceptions.html#input_stream_error)? – TemplateRex

回答

0

您可以包圍在一個try catch塊存檔功能,在出現異常的情況下,做記錄。

我已經這樣做了:

#if LIBRARY_DEBUG 
    #define ARCHIVE_TRY try { 
    #define ARCHIVE_CATCH } \ 
     catch(const std::exception& e) { \ 
      STACK_TRACE; \ 
      LOG_ERROR(std::string("Exception: " + e.what())); \ 
      throw e; \ 
     } 
#else 
    #define ARCHIVE_TRY 
    #define ARCHIVE_CATCH 
#endif 
相關問題