这是我尝试过的,但我被Error: Unknown exception
抛出
try{//load
std::ifstream stream(arch_name.c_str());
std::cout << ">> " << "Started deserializing " << arch_name << std::endl;
boost::archive::binary_iarchive arc(stream);
arc & c & matrix;
stream.close();
std::cout << ">> " << "Finished deserializing" << std::endl;
}catch(std::exception e){
std::cout << "Error: " << e.what() << std::endl;
return 1;
}
这在带有 gcc 的 Linux 中运行良好。我在 Windows 中使用 Visual Studio。
编辑
回溯显示basic_binary_iprimitive.hpp
正在引发异常
template<class Archive, class Elem, class Tr>
inline void basic_binary_iprimitive<Archive, Elem, Tr>::load_binary( void *address, std::size_t count){
//.....
if(scount != s)
boost::serialization::throw_exception(
archive_exception(archive_exception::input_stream_error)
);
编辑
我将catch
黑色更改为catch(boost::archive::archive_exception e)
并打印。input stream error
boost存档异常中的虚拟内容是否有任何遗漏?