Привет, я написал код, который сериализует некоторый объект в XML, а затем пытается десериализовать его из файла. Это работает, но вдруг я получаю
terminate called after throwing an instance of 'boost::archive::archive_exception'
what(): input stream error
Так что, наверное, я где-то совершил серьезное изменение. Проблема в том, что boost не дает мне больше информации, есть ли способ (возможно, флаг компилятора?), Чтобы получить больше информации об ошибке?
Я использую G ++, и Boost v1.46
Вы можете заключить функцию архива в блок 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
Других решений пока нет …