C++ 学习笔记(5)语句、异常

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/l773575310/article/details/79047862

C++ 学习笔记(5)语句、异常

参考书籍:《C++ Primer 5th》


5.3 条件语句

5.3.2 switch语句

  • switch内部的变量定义:不能初始化变量,仅可以定义。最好使用花括号已限制变量作用域。

5.4 迭代语句

5.4.3 范围for语句(range for statement)

  • 遍历序列(拥有能返回begin和end成员的类型):
    • 用花括号括起来的初始值列表。
    • 数组。
    • vector或string等类型。
for (int a : {2, 3, 4})     // 初始化列表
    cout << a << endl;

int b[] = { 4,2,6,2 };
for (int v : b)             // 数组
    cout << v << endl;

string s = "cool";
for (auto c : s)            // 字符串
    cout << c << endl;

5.6 try语句块和异常处理

5.6.1 throw表达式

  • 直接抛出异常:throw runtime_error("Throw the fucking error!")

5.6.2 try语句块

  • try块中如果有异常,会被catch块检测,如果匹配到会执行其内容,否则一直找到合适的catch,最后没有找到的,程序会转到名为terminate的标准库函数。
try
{
    throw runtime_error("Shit! Man!");  // 抛出异常
}
catch (runtime_error err)
{
    cout << err.what();     // 捕获了异常,输出了异常的信息:"Shit! Man!"
}

5.6.3 标准异常

  • 标准库函数的异常类:
    • exception头文件:最通用的异常类exception。只报告异常发生,不提供额外信息。
    • new头文件:bad_alloc异常类型。
    • type_info头文件:定义了bad_cast异常类型。
    • stdexcept头文件:常用异常类,如下表。

  • 只能默认初始化,而不能提供初始值的对象:exception、bad_alloc和bad_cast。
  • 除了上面的,其他异常类型只能用string或C风格字符串,来初始化异常对象,而不能使用默认初始化。
  • 异常类型只定义了一个what的成员函数。返回值是const char *。如果异常有字符串初始值,就返回这个字符串,否则其返回内容由编译器决定。

猜你喜欢

转载自blog.csdn.net/l773575310/article/details/79047862
今日推荐