C++_异常处理

复习-文件操作流程:

  • step1.头文件要写fstream

    #include

  • step2.定义一个file对象

    fstream file; char arr[100];

  • step3.判断文件是否打开

    if(file.is_open()){判断是否有文件,是继续,否退出}

  • step4.1 get put函数

    for(int i=0;i<strlen(arr);++i){file.get(arr[i]);}

  • step4.2 write read函数

    file.write(字符数组名,读取长度);

  • strp5 << >>

    file<<“读入的字符”;

复习-字节流和字符流对比

字节流

  • 保密性高,省内存,操作迅捷

字符流

  • 贴近人的写法 外部可见 方便修改

异常:

定义: 在代码正确的前提下,运行时所遇到的一些错误
处理方式

  • C通过返回值做异常处理(就是每次写函数之前都加的判断语句)并将异常返回给上级调用

C++处理方式: try-catch-throw
工作步骤:

  • step1.try{测试代码块;if(判断条件){为真 throw抛出异常;}}

  • step2.交给外部catch处理,如果处理不了,交给上级

  • step2.1 如果外部catch未能捕获这个异常,交给上级处理,直到问题解决 (如果一直无法解决,程序终止)

标准异常类——exception

  • 头文件——stdexcept
  • bad_alloc:new内存太多 导致内存申请失败
  • out_of_range:数组越界 (C中没有检查数组越界的机制,所以需要自己写)
  • bad_cast:使用不安全的dynamic_cast进行不安全的强制转换会抛出此异常
  • ///…

说明:

  • EOf=end of file 等价于 -1
  • ASCII码不存在-1 因此文本文件不可能和-1相同的内容
  • 对于存在多个异常抛出,程序是按个执行,只有上一个异常处理完成之后才会进行后面的代码
  • 虚函数在父类中并没有实现功能,也就是一个接口,可以在子类中写新功能

代码实例

#include<iostream>
#include<fstream>
using namespace std;
void fun(int x, int y)
{
 if (y == 0)
 {
  throw "被除数是0";//抛出的异常可以是任何类型
 }
 cout << x / y << endl;
}
 //捕获异常
 catch (int x) {}//捕获throw抛出的int型异常
 catch (char *str)//捕获throw抛出的字符串类型异常
 {
  cout << str << endl;
  cout << "请重新输入" << endl;
  cin >> y;
  fun(x, y);
 }
 catch (...) {}//捕获任何类型异常
 cin.get();
 cin.get();
 return 0;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值