C++ primer读书笔记(五)

前言

不知不觉七天长假已经结束了,回望我自己这十年也是感慨颇多。十年前的我刚上初中,从一个小山沟第一次到了县城里读书,这个时候发现自己多么微不足道。第一次期中考试就来了一个全年级730名(一共1200人),然后在三年里的努力就不再多说,三年后中考的结果是200名升入国重的实验班。刚去高中也是和初中差不多,很多从乡村中学考上来的实力都很强。200起步,最后在高三的时候巅峰达到年纪19名全市51名。但是最后的考试中由于发挥不稳定导致结果不是那么好,去了一个我认为一般的一本。这四年里我的学习成绩不是很理想,但是我觉得我的大学很轻松。很多人会说加入什么学生会,社团,我一个都没有去,学生会的官僚主义盛行毫无兴趣。倒是学习一些其他的书,本来是通信专业,结果本专业的课程一窍不通,学了一大堆计算机网络有关的知识。然后通过考研来到了计算机专业。我觉得这十年的变化也是巨大的,这种感觉是第一次感受到。我也期待下一个十年能够有更大的变化,那个时候回首十年时也是溢于言表的惊喜吧!

正文

这一章是语句内容很少,我觉得重点就是异常处理语句。也有可能是我知识面比较狭窄的原因导致我觉得这部分比较新奇吧。

  • throw 表达式:异常检测部分使用throw表达式来表示它遇到无法处理的问题。throw 引发异常
  • try 语句块:异常处理部分使用try语句块处理异常。
#include <iostream>
using namespace std;
int main() {
  int i = 0;
  int j = 1;
  try {
    if (i != j){
      throw runtime_error("i != j");//抛出异常
    }
  }catch (runtime_error e){
    cout << e.what();//捕获异常
  }
  if (i == j){
    throw runtime_error("i == j");
    //抛出的异常未被捕获将导致程序停止
  }
  return 0;
}

其中有几个异常类:

  • exception头文件:定义了最通用的异常类exception
  • stdexcept头文件:定义了几种常用的异常类,例如runtime_error,range_error。
  • new头文件:定义了bad_alloc异常类型
  • type_info头文件:定义了bad_cast异常类型

*PS:*其中只能以默认初始化的方式初始化exception,bad_alloc,bad_cast对象,不允许为这些对象提供初始值。其余异常对象可以使用string对象进行初始化。

上面代码中我用到了一个what函数,这个函数是用于返回string字符串的内容。但是这个返回的内容与异常对象的类型有关。

  • 异常有初始值—返回该初始值
  • 异常无初始值—返回内容由编译器决定

后记

这部分内容很简单,所以讲了很多废话。写完我也准备关电脑回宿舍了!哈哈,明天又是元气满满的一天!

发布了7 篇原创文章 · 获赞 5 · 访问量 982

猜你喜欢

转载自blog.csdn.net/deng821776892/article/details/102413372