C++ 6.11 continue 、goto、try 异常处理

本文介绍了C++中的continue和goto语句用法,并详细解释了try块和异常处理机制,包括throw表达式、try块及标准异常类等内容。

简介

  • continue 语句导致最近的循环语句的当次迭代提前结束

  • 对于 while 和 do while 语句,继续求解循环条件

  • 对于 for 循环,程序流程接着求解for 语句 头中的expression表达式

  • continue 语句只能出现在for 、 while 、或者 do while 循环中,包括嵌套在这些循环内部的块语句中

=======================================================================================================================

一、continue 语句

1、continue 语句简介

  • continue 语句导致最近的循环语句的当次迭代提前结束

  • 对于 while 和 do while 语句,继续求解循环条件

  • 对于 for 循环,程序流程接着求解for 语句 头中的expression表达式

  • continue 语句只能出现在for 、 while 、或者 do while 循环中,包括嵌套在这些循环内部的块语句中

string inBuf;
while(cin>>inBuf && !inBuf.empty()){
      if(inBuf[0] !='_')
      continue;
}
//如果不是下划线,终止当前循环,接着读取下一个单词

二、goto 语句

1、goto 语句简介

  • goto 语句提供了函数内部的无条件跳转,实现从goto 语句跳转到同一个函数内某个带标号的语句

goto label;// label 是用于标识带标号的语句的标识符

三、try 块和异常处理

1、异常处理机制

  • throw 表达式
  • try 块
  • 重点内容由标准库定义的一组异常类,用来在throw 和相应的catch 之间传递有关的错误信息。

2、throw 表达式

  • 系统通过throw 表达式抛出异常,throw表达式由关键字throw 以及尾随的表达式组成,通常以分号结束;
  • throw 表达式的类型决定了所抛出的异常的类型;

3、try 块

try{
} 
catch ( ){}
catch( ){}
  • 一旦catch 子句执行结束,程序流程立即继续执行紧随着最后一个catch 子句的语句。

  • 在try 块中声明的变量,包括 catch 子句中声明的变量,不能在try 外面引用。

//习题 6.23
int main()
{
    bitset<100> bs;
    for(size_t i=0;i!=bs.size();i++)
    bs[i]=1;
    bs.to_ulong();//执行to_ulong 操作将产生overflow_error异常
    return 0;
}
//习题 6.24
int main()
{
    bitset<100> bs;
    for(size_t i=0;i!=bs.size();i++)
    bs[i]=1;
   try{ bs.to_ulong();//执行to_ulong 操作将产生overflow_error异常}
      catch(runtime_error err){//异常处理
      cout<<err.what()<<endl;
   }
    return 0;
}

四、标准异常

1、标准异常类

C++标准库定义了一组类,用于报告在标准库中的函数遇到的问题,
标准异常类定义在四个头文件中:

  • exception 头文件定义了最常见的异常类,它的类名是exception 。
  • stdexcept头文件定义了几种常见的异常类。
  • new 头文件定义了 bad_alloc 异常类型,提供因为无法分配内存而由new 抛出的异常;
  • type_info 头文件定义了bad_cast异常类型。

2、使用预处理器进行调试

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值