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

资料时间: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(...)是捕捉所有异常。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值