zoukankan      html  css  js  c++  java
  • 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:下溢出
    */
  • 相关阅读:
    codevs 2021 中庸之道
    bzoj 1227: [SDOI2009]虔诚的墓主人
    cogs 2620. [HEOI2012]朋友圈
    bzoj 3123: [Sdoi2013]森林(45分暴力)
    cogs 1685 魔法森林
    bzoj 1061: [Noi2008]志愿者招募
    poj 1743 Musical Theme
    bzoj 1001: [BeiJing2006]狼抓兔子
    bzoj 4006: [JLOI2015]管道连接
    hdu 5693 D Game
  • 原文地址:https://www.cnblogs.com/creature-lurk/p/15256528.html
Copyright © 2011-2022 走看看