• 第5章 语句


    5.4.3 范围for

    这种语句可以遍历容器或者其他序列的所有元素

    for( declaration : expression)
        statement

    这种循环与传统的for循环有等价关系:

    vector<int> v = {0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for( auto &r : v)
        r *= 2;
    
    //等价于
    for( auto beg = v.begin(); beg != v.end(); ++beg)
        (*beg) *= 2;

    5.6 try语句块和异常处理

    没有异常处理的话,发生异常后,会转到名为terminate的标准库函数,依据系统,一般会导致程序非正常退出。

    throw表达式

    使用throw表达式引发一个异常。

    //<stdexcept>中定义了runtime_error异常
    throw runtime_error("a exception occored");

    try语句块

    try
    {
        //可能出错的语句
    }
    catch(runtime_error err)
    {
        //对异常进行处理
    }
    catch(other_error o_err)
    {
        //对上一个没有捕捉到的异常进行处理
    }

    标准异常

    <exception>:定义了最通用的异常类,仅报告异常发生,不提供额外信息。

    <stdexcept>:定义类常用的异常类

    exception:最常见的问题

    runtime_error:只有在运行时才能检测到的问题

    range_error:运行时错误,生成的结果超出了有意义的值域

    overflow_error:运行时错误,计算上溢

    underflow_error:运行时错误,计算下溢

    logic_error:程序逻辑错误

    domain_error:逻辑错误,参数对应的结果值不存在

    invalid_argument:逻辑错误,无效参数

    length_error:逻辑错误,试图创建一个超出改类型最大长度的对象

    out_of_range:逻辑错误,使用了超出有效范围的值

    <new>:定义了bad_alloc异常类型

    <type_info>:定义了bad_cast异常类型

    我们只能默认初始化exception、bad_alloc、bad_cast异常对象,其他异常对象需要以string或者C风格字符串初始化。

    异常类型定义了一个what成员函数,返回一个const char*字符串。

  • 相关阅读:
    仿百度翻页(转)
    文字顺时针旋转90度(纵向)&古诗词排版
    微信小程序使用canvas绘制图片的注意事项
    PHP即时实时输出内容
    使用Android Studio遇到的问题
    RuntimeError: Model class users.models.UserProfile doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.
    drf中的各种view,viewset
    代码审计:covercms 1.6
    windows下安装phpredis扩展
    python练习:异常
  • 原文地址:https://www.cnblogs.com/qiusuo/p/4477614.html
Copyright © 2020-2023  润新知