August 2021
Intermediate to advanced
450 pages
5h 35m
Chinese
标准库vector并不进行范围检查。例如:
这个初始化操作有可能将某个随机值存入i中,而不是产生一个错误。这并不是我们所需要的,而这种越界错误又是常见的问题。因此,我通常使用vector的一个简单改进版本,它增加了范围检查:
Vec继承了vector除下标运算符之外的所有内容,它重定义了下标运算符来进行范围检查。vector的at()操作也完成下标操作,但它会在参数越界时抛出一个类型为out_of_range的异常(参见3.5.1节)。
对于Vec,越界访问会抛出一个用户可捕获的异常,例如:
这段程序会抛出一个异常,然后将其捕获(参见3.5.1节)。如果用户不捕获异常,程序会以一种明确定义的方式退出,而不是继续执行或是以一种未定义的方式失败。一种尽量减小未捕获异常带来的问题的方法是使用以try块作为main()函数的函数体。例如:
这段代码提供了默认的异常处理程序,这样,当我们未能成功捕获某个异常时,就会在标准错误流cerr上打印一条错误信息(参见10.2节)。 ...
Read now
Unlock full access