【旧资料整理】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(...)是捕捉所有异常。
分享时间: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(...)是捕捉所有异常。
相关文章推荐
- C++ 中关于文件的读入和输出
- c++中关于文件操作资料收集(值得收藏)
- C++ 中关于文件的读入和输出
- linux中关于tmpfs文件系统资料的整理与分析
- c++中关于文件操作资料收集(外文)
- [导入]关于整理出的设计模式系列各方面学习资料
- 关于文件读入的问题与解决
- 关于VS中安装文件出错信息文件验证出错HRESULT=80040155的建决方法
- 我对core文件资料的收集整理
- 整理的一个csdn的帖子,关于C++中的对齐的
- 关于C++里面的PDB文件
- 关于条形码绘制的资料整理 (转)
- 关于整理出的设计模式系列各方面学习资料
- 关于如何将word文件读入RichTextBox
- 关于条形码绘制的资料整理
- 近期整理的关于数据存储和备份的一些资料
- C++中关于配置文件的问题
- linux+gtk+c/c++ 开发资料收集整理
- 关于条形码绘制的资料整理
- 关于vc2005编译asm文件出错的一个处理方法