C++ Primer 第五章 语句

时间:2020-07-01 22:05:47   收藏:0   阅读:77

第五章 语句

5.1 范围for语句

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

5.2 try语句和异常处理

在C++中,异常处理包括

5.2.1 throw表达式

Sale_item item1,item2;
cin >> item1 >> item2;
if(item1.S() == item2.S()) {
    cout << item1.S() + item2.S() << endl;
    return 0;
}else {
    cout << "error" << endl;
    return -1;
}
//等价于
if(item1.S() != item2.S()) {
    throw runtime_error("error");
}
cout << item1 + item2 << endl;

5.2.2 try语句块

//通用语法形式
try {
    program-statements;
} catch (exception-declaration) {
    handler-statements;
} catch (exception-declaration) {
    handle-statements;
}

如上面的例子,我们可以使用

while(cin >> item1 >> item2) {
    try {
        cout << item1.S() + item2.S() << endl;
        break;
    } catch (runtime_error err) {
        cout << "err.what(), try again?" << endl;
    }
}

5.2.3 标准异常

C++标准库定义了一组类用于报告标准库函数遇到的问题,这些异常类也可以在用户编写的程序中使用,他们分别定义在四个头文件中

  1. exception头文件,定义了最痛有的异常类exception
  2. stdexcept定义了集中常用的异常类
  3. new头文件定义了bad_alloc异常类型
  4. type_info定义了bad_cast异常类型
评论(0
© 2014 mamicode.com 版权所有 京ICP备13008772号-2  联系我们:gaon5@hotmail.com
迷上了代码!