您的位置:首页 > 编程语言 > C语言/C++

【旧资料整理】C++ 关于读入文件出错

2017-06-24 12:16 274 查看
资料时间:2009-12-02之前
分享时间:2009-12-02到百度空间,空间关闭,重新整理

经常从文件读入数据,如果读入失败,应该停止处理,否则会产生无法预期的错误f。文件流stream出错常见这样三种情况。
一、文件不存在:
如果用了ios::in打开方式,不创建文件,file值是0,file>>变量返回0,file.eof返回0,不产生异常。所以try{}catch(){}结构无法捕捉异常,不能用file.eof()判断失败,可以用!file判断失败,可以用if(file>>变量)判断失败。
如果用了ios::out打开方式,创建文件,file非0,所以!file不能用来失败,其它同ios::in。
二、文件空或数据格式不对:
用if(file>>变量)判断即可。
三、产生异常:当然用try{}catch(){}结构无法捕捉异常了。

例如:想读入一个整数,且很重要,一但失败必需结束,保险的写法是:
try{
int a;
fstream file("a.txt",ios::in);
if(!file)
throw a;
if(!file>>a)
throw a;
file.close();
}catch(...)
{
cout<<"error";
return;
}


其中throw是抛出一个异常,后接一个变量即可,用来区分异常类型。catch(...)是捕捉所有异常。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: