C++Primer:Break、Continue、Goto、Try/异常处理
1.break语句:
<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语句:
3.goto语句:
4.Try块与异常处理:
4.1 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 块以关键字 try 开始,后面是用花括号起来的语句序列块。try 块后面是一个或多个 catch 子句。每个 catch 子句包括三部分:关键字 catch,圆括号内单个类型或者单个对象的声明——称为异常说明符, 以及通常用花括号括起来的语句块。如果选择了一个 catch 子句来处理异常,则执行相关的块语句。一旦 catch 子句执行结束, 程序流程立即继续执行紧随着最后一个 catch 子句的语句。
在前面的例子中,使用了 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/异常处理相关推荐
- break, continue, goto, return语句详解
关于break,continue,goto,return语句区别详解(所有语言通用的语法知识) 一.break 1. break语句形式: break; 2. break语句功能: A. switch ...
- php中循环跳过,php for循环的exit / break / continue /goto 停止、跳过循环、继续循环...
php 与 JavaScript 有很多相似的地方: for循环中 也有两个相同: 只是 php 比 js 多了一个 exit , 其他用法一样: for($i =1;$i<11;$i++){ ...
- 跳转控制语句 break || continue || goto
#include <stdio.h> #include <string.h> void main(){int chance=3;int loginCount=chance;// ...
- C++ 笔记(11)— 循环(while/for/do while/嵌套循环、break/continue/goto 循环控制语句)
1. while 循环 C++ 中 while 循环的语法: while(condition) {statement(s); } 2. for 循环 2.1 典型 for 循环 C++ 中 for 循 ...
- c/c++教程 - 1.6 程序流程结构 if switch do while for break continue goto ?:三目运算符
八.程序流程结构 c/c++支持最基本的三种程序运行结构:顺序结构.选择结构.循环结构. 顺序结构:程序按顺序执行,不发生跳转. 选择结构:依据条件是否满足,有选择的执行相应功能. 循环结构:依据条件 ...
- 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 ...
- Java中带标签的break,continue
首先不带标签的break,continue 就不介绍了.大家平时用的最多的也就是这样的情况了. 首先Java中没有goto,但是可以利用带标签的break, continue来实现类似的跳转. 首先来 ...
- Java中的增强for循环和break continue的使用 以及流程控制训练
增强for循环 Java5中引入的用于数组或集合的增强型for循环 声明新的局部变量,该变量的类型必须和数组 for (声明语句:表达式){ 代码句子 } 元素的类型匹配.其作用域限定在循环语句块,其 ...
- 增强for循环 break continue
增强for循环 java引入了一种主要用于数组或集合的增强型for循环 java增强for循环语法格式如下 for(声明语句:表达式) {//代码句子 } 声明语句:声明新的局部变量,该变量的类型必须 ...
- 汇编 控制流伪指令 .break .continue .else .elseif .endif .endw .if .repeat .until .untilcxz .while
条件控制流伪指令 .break .continue .else .elseif .endif .endw .if .repeat .until .untilcxz .while 条件控制流语法如下: ...
最新文章
- 数据库性能优化1——正确建立索引以及最左前缀原则
- 【大咖论道】周志华,唐杰教授等专家,站在 2022,展望大模型的未来
- 沈向洋:从深度学习到深度理解
- mkdir 创建多级目录_linux中的目录功能和文件文件管理
- C#easyui combotree 设置节点折叠
- 张掖计算机职称考试,甘肃省张掖市2018年3月计算机等级考试公告
- dns bind配置教程
- RTT时钟管理篇——RTT定时器超时判断理解
- linux下svn命令
- excel表格行列显示十字定位_取消excel单元格十字定位(excle表格里的十字对准)
- java中的银行界面开发_ATM机银行项目java图形界面
- netsetman使用教程_网络管理软件NetSetMan安装教程
- C语言逻辑运算符和||,一篇文章带你读懂逻辑表达式!
- ubuntu20.04下编译仿真智能车racecar的错误解决汇总
- 7寸显示器 树莓派4b_树莓派7寸触摸屏安装指南
- java xml特殊字符_mybatis xml中特殊字符处理及特殊符号
- Java编程那些事儿78——时间和日期处理
- 卡耐基梅隆大学赢得DARPA网络挑战赛
- linux中su命令源码,Linux中的su命令的详细解释
- QT编程从入门到精通之一:“第一章:认识QT”之“1.1 Qt简介”