《C++ Primer 第五版》(第5.1-5.6节) ——异常处理机制(try语句块,throw表达式和catch异常捕捉处理单元)

1. 异常处理机制

          C++中使用try,throw和catch三个关键字来实现异常的触发、抛出和处理的功能,具体通用语法形式如下:

                    try{

                                     if(true)

                                                  normal program-statements;//没有触发异常时候执行的代码

                                     if(false)

                                                  throw(exception);        //出现错误,抛出的异常

                     }catch(exception-declaration)   //异常捕捉

                                       handler-statements;      //异常处理

                    }.....

         C++标准库定义了一组类,用于处理标准库中遇到的问题(支持创建/拷贝/赋值操作),具体如下:

                   头文件<exception> 异常类exception 只报告异常,不提供其他信息。默认初始化

                   头文件<new> 异常类 bad_alloc   默认初始化

                   头文件<type_Info> 异常类 bad_cast   默认初始化

                   头文件<stdexcept> 异常类,如下所示:string/C风格字符串初始化

                                

        异常类型定义了一个what的成员函数,无参数,返回值为C风格字符串,和异常类型相关。异常类采用显示初始化的,则返回显示初始化的值,异常类是采用默认初始化的,内容由编译器决定。

2.case,范围for语句,continue知识点总结

           在switch-case语句中,如果每个case语句后面不加上break中止符,则case语句会跨越标签继续执行下去。例如:

                  char ch;cin>>ch;

                  switch(ch){

                                     case 'a' : ++acnt;       //如果输入的ch字符是‘a’,判断第一个case语句满足,执行完++acnt后

                                     case 'e' : ++ecnt;      //会跳过第二个case语句,执行++ecnt;

                  }

        在switch-case语句中,case标签不能单独出现,后面应该跟上一条语句或者另外一个case标签。也就是说,case标签后面可以不接语句,但是冒号必须保留。

        范围for语句中的expression(范围for语句格式:for(declaration : expression) statement)必须是一个序列,其中序列的头指针和尾后指针已经确定,因此在使用范围for语句的时候,不允许往序列中增加或删除元素(任何破坏头指针和尾后指针的行为都不允许)

       continue不允许直接使用在switch-case中,具体原因是continue是跳出当前循环并进入下一次循环,而是switch-case只有一次循环操作。

                   

发布了72 篇原创文章 · 获赞 32 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/xx18030637774/article/details/90436941