zoukankan      html  css  js  c++  java
  • 第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*字符串。

  • 相关阅读:
    【Educational Codeforces Round 36 C】 Permute Digits
    【Educational Codeforces Round 36 B】Browser
    【Educational Codeforces Round 36 A】 Garden
    【习题 8-14 UVA
    【习题 8-13 UVA
    【习题 8-12 UVA
    【习题 8-11 UVA
    【习题 8-10 UVA
    关于货仓选址问题的方法及证明(在数轴上找一点使得该点到所有其他点的距离之和最小)
    P2512 [HAOI2008]糖果传递
  • 原文地址:https://www.cnblogs.com/qiusuo/p/4477614.html
Copyright © 2011-2022 走看看