【发布时间】:2012-07-20 20:08:34
【问题描述】:
我有这个程序(部分程序未发布):
//Includes and functions
int main(int argc, char *argv[])
{
ifstream loc("achievements.loc", ios::binary);
getline(loc, header, static_cast<char>(1));
loc.seekg(15, ios::cur);
loc.read(reinterpret_cast<char*>(&subdirs), sizeof(subdirs));
for( int i = 0; i < nstrings; i++ )
{
loc.read(reinterpret_cast<char*>(&strid), sizeof(strid));
loc.read(reinterpret_cast<char*>(&stroffset), sizeof(stroffset));
curoffset = loc.tellg();
loc.seekg(strcodesbeg+16+stroffset);
getline(loc, codestring, '\0');
loc.seekg(curoffset);
}
}
如果出现以下情况,我想终止程序: - 文件未打开; - getline 获取的头部字符串不等于"String"; - 任何读取功能失败; - 任何一个 seekg 失败; - strid 与 1234 不匹配。
如何使用 C++ 异常来做到这一点?我应该使用单个 try{}catch(...){} 块来创建函数,例如读取数据并在失败时发送 EOF_REACHED,还是使用 try{}catch(var e){}catch(var2 e){}、class 或任何其他方式?
我理解简单函数中异常的概念,但是当有更大的程序时,它会变得复杂。
我也没有发现任何在 main 函数中显式使用 try catch 块的 C++ 源代码,但可以处理异常。这怎么可能?
【问题讨论】:
标签: c++ exception exception-handling