1.break语句:

break语句用于结束最近的while、do while、for、switch语句,并将程序的执行权传递给紧接在被终止语句之后的语句。
<span style="font-size:18px;"># include <iostream>
#include <vector>
using std::vector;
using std::cout;
using std::endl;
int main()
{vector<int> vect;for(int i = 0;i<50; i++){vect.push_back(i);}for(vector<int>::iterator iter = vect.begin();iter != vect.end(); ++iter){cout<<*iter<<" ";}vector<int>::iterator iter1 = vect.begin ();while(iter1 != vect.end ()){if(*iter1 == 47 )break; // OK: Find it;else++iter1; // Not Find, Keep Looking}cout<<endl; //break to here...cout<<*iter1;return 0;
}</span>

需要注意的是,break只能出现在循环或者switch结构中,或者出现在嵌套于循环或switch结构中的语句里。

2.continue语句:

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

3.goto语句:

goto语句提供了函数内部的无条件跳转,从而实现goto语句跳转到同一函数内某个带标号的语句。(从上世纪60年代后期开始,不主张使用goto语句。goto语句使跟踪程序控制流程变得很困难,并且使程序难以理解,也很难修改)

4.Try块与异常处理:

在设计各种软件系统的过程中,处理程序中的错误和其他反常行为是困难的部分之一。像通信交换机和路由器这类长期运行的交互式系统必须将90%的程序代码用于实现错误检测和错误处理。随着基于Web的应用程序在运行时不确定性的增多,越来越多的程序员更加注重错误的处理。
异常就是运行时出现的不正常,例如运行时耗尽了内存或遇到意外的非法输入。异常存在于程序的正常功能之外,并要求程序立即处理。
异常机制提供程序中错误检测与错误处理部分之间的通信。C++的异常处理中包括:
1.throw表达式,错误检测部分使用这种表达式说明遇到了不可处理的错误。可以说,throw引发了异常条件。
2.try块,错误处理部分使用它来处理异常。try语句块以try关键字开头,并以一个或多个catch字句结束。在try块中执行的代码所抛出(throw)的异常,通常会被其中一个catch子句处理。由于他们“处理”异常,catch字句也称为处理代码。
3.由标准库定义的一组异常类,用来在 throw 和相应的 catch 之间传递有关的错误信息。

4.1 throw表达式

系统通过 throw 表达式抛出异常。throw 表达式由关键字 throw 以及尾随的表达式组成,通常以分号结束,这样它就成为了表达式语句。throw 表达式的类型决定了所抛出异常的类型。
举一个简单的例子:
S<span style="font-size:18px;">ales_item item1,item2;
std::cin>>item1>>item2;
if(item1.same_isbn(item2))
{std::cout<<item1+item2<<std::endl;return 0;
}
else
{std::cerr<<"Data must refer to same ISBN"<<std::endl;return -1; //indicate failure
}</span>

在这个例子中,我们可以利用throw抛出异常来改写检测代码:

<span style="font-size:18px;">Sales_item item1,item2;
std::cin>>item1>>item2;
if(!item1.same_isbn(item2))throw runtime_error("Data must refer to same ISBN");
srd::out<<item1+item2<<std::endl;</span>

这段代码检查 ISBN 对象是否不相同。如果不同的话,停止程序的执行,并将控制转移给处理这种错误的处理代码。
throw 语句使用了一个表达式。在本例中,该表达式是 runtime_error 类型的对象。runtime_error 类型是标准库异常类中的一种,在 stdexcept 头文件中定义。我们通过传递 string对象来创建 runtime_error 对象,这样就可以提供更多关于所出现问题的相关信息。

4.2 Try 块

try块的通用语法形式为:

try{
      program-statements
}catch (exception-specifier){
      handler-statement
}catch (exception-specifier){
      handler-statement
}//......
try 块以关键字 try 开始,后面是用花括号起来的语句序列块。try 块后面是一个或多个 catch 子句。每个 catch 子句包括三部分:关键字 catch圆括号内单个类型或者单个对象的声明——称为异常说明符, 以及通常用花括号括起来的语句块。如果选择了一个 catch 子句来处理异常,则执行相关的块语句。一旦 catch 子句执行结束, 程序流程立即继续执行紧随着最后一个 catch 子句的语句。
try 语句内的 program-statements 形成程序的正常逻辑。这里面可以包含任意 C++ 语句,包括变量声明。与其他块语句一样,try 块引入局部作用域,在 try 块中声明的变量,包括 catch 子句声明的变量,不能在 try 外面引用。
     在前面的例子中,使用了 throw 来避免将两个表示不同书的 Sales_items对象相加。想象一下将 Sales_items 对象相加的那部分程序与负责与用户交流的那部分是分开的, 则与用户交互的部分也许会包含下面的用于处理所捕获异常的代码:

<span style="font-size:18px;">while (cin >> item1 >> item2) {
try {// execute code that will add the two Sales_items// if the addition fails, the code throws a runtime_error exception
} catch (runtime_error err) {// remind the user that ISBN must match and prompt for another paircout << err.what()<< "\nTry Again? Enter y or n" << endl;char c;cin >> c;if (cin && c == 'n')break; // break out of the while loop
}
}</span>

关键字 try 后面是一个块语句。这个块语句调用处理 Sales_item 对象的程序部分。这部分也可能会抛出 runtime_error 类型的异常。上述 try 块提供单个 catch 子句,用来处理 runtime_error 类型的异常。在执行 try 块代码的过程中,如果在 try 块中的代码抛出 runtime_error 类型的异常, 则处理这类异常的动作在 catch 后面的块语句中定义。本例中, catch输出信息并且询问用户是否继续进行异常处理。如果用户输入'n',则结束while;否则继续循环,读入两个新的 Sales_items 对象

C++Primer:Break、Continue、Goto、Try/异常处理相关推荐

  1. break, continue, goto, return语句详解

    关于break,continue,goto,return语句区别详解(所有语言通用的语法知识) 一.break 1. break语句形式: break; 2. break语句功能: A. switch ...

  2. php中循环跳过,php for循环的exit / break / continue /goto 停止、跳过循环、继续循环...

    php 与 JavaScript 有很多相似的地方: for循环中 也有两个相同: 只是 php 比 js 多了一个 exit , 其他用法一样: for($i =1;$i<11;$i++){ ...

  3. 跳转控制语句 break || continue || goto

    #include <stdio.h> #include <string.h> void main(){int chance=3;int loginCount=chance;// ...

  4. C++ 笔记(11)— 循环(while/for/do while/嵌套循环、break/continue/goto 循环控制语句)

    1. while 循环 C++ 中 while 循环的语法: while(condition) {statement(s); } 2. for 循环 2.1 典型 for 循环 C++ 中 for 循 ...

  5. c/c++教程 - 1.6 程序流程结构 if switch do while for break continue goto ?:三目运算符

    八.程序流程结构 c/c++支持最基本的三种程序运行结构:顺序结构.选择结构.循环结构. 顺序结构:程序按顺序执行,不发生跳转. 选择结构:依据条件是否满足,有选择的执行相应功能. 循环结构:依据条件 ...

  6. C++循环语句使用(while for do while)及break continue goto的使用

    #include<iostream> using namespace std; int main() {int sum = 0, i = 1, sum1 = 0;/*while (i &l ...

  7. Java中带标签的break,continue

    首先不带标签的break,continue 就不介绍了.大家平时用的最多的也就是这样的情况了. 首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转. 首先来 ...

  8. Java中的增强for循环和break continue的使用 以及流程控制训练

    增强for循环 Java5中引入的用于数组或集合的增强型for循环 声明新的局部变量,该变量的类型必须和数组 for (声明语句:表达式){ 代码句子 } 元素的类型匹配.其作用域限定在循环语句块,其 ...

  9. 增强for循环 break continue

    增强for循环 java引入了一种主要用于数组或集合的增强型for循环 java增强for循环语法格式如下 for(声明语句:表达式) {//代码句子 } 声明语句:声明新的局部变量,该变量的类型必须 ...

  10. 汇编 控制流伪指令 .break .continue .else .elseif .endif .endw .if .repeat .until .untilcxz .while

    条件控制流伪指令 .break .continue .else .elseif .endif .endw .if .repeat .until .untilcxz .while 条件控制流语法如下: ...

最新文章

  1. 数据库性能优化1——正确建立索引以及最左前缀原则
  2. 【大咖论道】周志华,唐杰教授等专家,站在 2022,展望大模型的未来
  3. 沈向洋:从深度学习到深度理解
  4. mkdir 创建多级目录_linux中的目录功能和文件文件管理
  5. C#easyui combotree 设置节点折叠
  6. 张掖计算机职称考试,甘肃省张掖市2018年3月计算机等级考试公告
  7. dns bind配置教程
  8. RTT时钟管理篇——RTT定时器超时判断理解
  9. linux下svn命令
  10. excel表格行列显示十字定位_取消excel单元格十字定位(excle表格里的十字对准)
  11. java中的银行界面开发_ATM机银行项目java图形界面
  12. netsetman使用教程_网络管理软件NetSetMan安装教程
  13. C语言逻辑运算符和||,一篇文章带你读懂逻辑表达式!
  14. ubuntu20.04下编译仿真智能车racecar的错误解决汇总
  15. 7寸显示器 树莓派4b_树莓派7寸触摸屏安装指南
  16. java xml特殊字符_mybatis xml中特殊字符处理及特殊符号
  17. Java编程那些事儿78——时间和日期处理
  18. 卡耐基梅隆大学赢得DARPA网络挑战赛
  19. linux中su命令源码,Linux中的su命令的详细解释
  20. QT编程从入门到精通之一:“第一章:认识QT”之“1.1 Qt简介”

热门文章

  1. Linux下获取线程TID的方法——gettid()
  2. 查看服务器cpu是否支持VT
  3. NYOJ 586 疯牛
  4. 论文阅读: Direct Monocular Odometry Using Points and Lines
  5. Spring事务传播机制与隔离机制
  6. Python基础知识一
  7. jquery-validae
  8. 数据库——MongoDB增删改查
  9. 2015山东信息学夏令营 Day4T3 生产
  10. C++用法的学习心得