《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只有一次循环操作。

 

                   

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值