C++第15课 异常处理

1.C++异常处理机制

int division(int a,int b)
{
    if (b == 0)
    {
        throw 0;
    }
    return a / b;
}
void print(int a, int b)
{
    try {
        division(a, b);
    }
    catch (int) {    //根据抛出的类型决定如何处理
        cout << "除数不能为0" << endl;
    }
    catch (string) {
        //每次只执行一个catch
    }
}
//当函数中不存在异常,用noexcept表示该函数不会有异常
int Max(int a, int b)    noexcept
{
    return a > b ? a : b;
}
//异常传参
int top(int* array,int size)
{
    if (size == 0) {
        throw string("栈为空!");
    }
    return array[size - 1];
}
void printTop()
{
    try {
        int stack[] = { 1,2,4,3,5,87,9 };
        int size = 0;
        top(stack, size);
    }
    catch (string str) {
        cout << str << endl;
    }
    catch (...) {    //捕获所有异常

    }
}

2.标准库的异常类

/*
    1.C++语言本身支持的异常类
        bad_alloc:new失败
        bad_cast:动态类型转换
        bad_typeid:类型推断是偶,typeid是零或空指针
        bad_exception:非预期异常
    2.C++程序问题引发异常
        logic_error:逻辑问题
        domain_error:域错误
        invalid_argument:无效参数
        length_error:超出长度
        out_of_range:超出范围
    3.程序作用域之外的错误
        runtime_error:运行期错误
        range_error:计算区间错误
        overflow_error:上溢出
        underflow_error:下溢出
*/

 

posted @ 2021-09-11 19:12  Creature_lurk  阅读(42)  评论(0编辑  收藏  举报