【发布时间】:2014-09-03 17:07:45
【问题描述】:
我正在使用 boosts 序列化函数来序列化数据并将其保存到项目中的外部文件,然后能够再次读取它们。
我遇到的问题是,如果以不正确的格式(错误地)读取文件,则程序会崩溃(可能是预期的)。
如何识别文件格式错误并在程序崩溃之前中断读入过程?
编辑:
我已经在我的读入函数中尝试了一个 try catch 结构,看起来像这样
int read_binary(file_in_out* object){
std::ifstream ifs((*object).file.c_str());
try
{
boost::archive::binary_iarchive ia(ifs);
ia >> (*object).content;
}
catch (boost::archive::archive_exception& ex)
{
std::cout << "An exception occurred. Exception Nr. " << '\n';
return 1;
}
catch (int e)
{
std::cout << "An exception occurred. Exception Nr. " << e << '\n';
return 1;
}
return 0;
}
当文件与它试图读入的结构无关时,这会捕获一个异常。但是,当我使用过期版本时,它不会捕获异常并在 'ia >> (*object).content;' 行崩溃有什么想法吗?
【问题讨论】:
标签: c++ serialization boost