C++数据结构第10课、C++异常简介

1、c++异常简介

  • 同一个 try 语句可以跟上多个 catch 语句
    — catch 可以定义具体处理的异常类型
    — 不同类型的异常由不同的 catch 语句负责处理
    — try 语句可以抛出任何类型的异常(可以是int ,字符或者字符串)
    — catch(…)用于处理所有类型的异常(通吃)
    — 任何异常都只能被捕获(catch)一次
  • 异常处理的匹配必须严格匹配,不进行任何的类型转换
#include <iostream>

using namespace std;

double divide(double a, double b)
{

    double ret = 0;
    const double delta = 0.0000001;
    if(b <= -delta || b >= delta)
    {
        ret = a/b;
    }
    else
    {
        throw 0;
    }
    return ret;
}

void demo1()
{
    try
    {
        throw 'c';
    }
    catch (int i)
    {
        cout << "catch (int i)" << endl;
    }
    catch (float f)
    {
        cout << "catch (float f)" << endl;
    }
    catch (char c)
    {
        cout << "catch (char c)" << endl;
    }
}

void demo2()
{
    throw "xiebs";
}
int main()
{
    try
    {
        double r = divide(8, 4);
        cout << "r = " << r << endl;
    }
    catch (...)
    {
        cout << "divide by zero" << endl;
    }

    demo1();


    try
    {
        demo2();
    }
    catch (string s)
    {
        cout << "catch (string s)" << endl;
    }
    catch (char* c)
    {
        cout << "catch (char* c)" << endl;
    }
    catch (const char* s)
    {
        cout << "catch (const char* s)" << endl;
    }
    return 0;
}

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值