C++学习之多态篇(异常处理)

一、异常处理

1.概念:对有可能发生异常的地方做出预见性的安排,异常处理过程如下图所示:

f1()出现异常,就会抛给调用者f2(),如果f2()处理不了就继续往上抛给它的调用者,依次类推。。。



2.使用例子:

使用try(尝试)...catch(捕获)  throw(主逻辑抛出异常)

因为 1是整数,所以catch里面的数据类型是int,如果想获得1的值,就用参数int &,在catch里面进行异常处理,在try里面运行正常的逻辑。


3.特点:

try与catch可以是一对多的关系,但是不能没有catch

4.常见异常

(1)数组下标越界

(2)除数为0

(3)内存不足

5.异常处理与多态的关系

定义一个异常接口类Exception作为基类,那么每一种具体的异常都可以通过传入父类类型来捕获并处理了。




不管是哪一种异常,都可以给catch传入父类Exception的类型来捕获,然后根据多态,运行的就是每个子类本身的包含异常处理过程的虚函数。

完整的代码例子如下:

#include <iostream>
#include <string>
#include <stdlib.h>
using namespace std;


/**
 * 定义函数division
 * 参数整型dividend、整型divisor
 */
int division(int dividend, int divisor)
{
    if(0 == divisor)
{
        // 抛出异常,字符串“除数不能为0”
throw string("除数不能为0");
}
else
{
return dividend / divisor;
}
}


int main(void)
{
int d1 = 0;
int d2 = 0;
int r = 0;
cin >> d1;
cin >> d2;
    // 使用try...catch...捕获异常
try
    {
        division(d1,d2);
    }
    catch(string  str)
    {
        cout<<str<<endl;
    }
return 0;
}

输出结果:

除数不能为0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值