第5章 语句
5.1 简单语句
语句以分号结束
空语句:在程序的某个地方,语法上需要一条语句,但是逻辑上不需要,使用空语句。
块语句:在程序的某个地方,语法上需要一条语句,但是逻辑上需要多条语句,使用块语句(复合语句)。
空块的作用等价于空语句
5.2 语句作用域
5.3 条件语句
if,switch,
case标签必须是整型常量表达式
5.4 迭代语句
while,传统for,范围for,do…while
范围for是C++11新标准,能直接遍历到容器中元素
do…while先执行循环体,再检查条件
do statement while (condition);
5.5 跳转语句
break,continue,goto,return
break语句负责终止离它最近的while,do…while,for或者switch语句,并从这些语句之后的第一条语句开始继续执行。
continue语句终止最近的循环中当前迭代并立即开始下一次迭代。
千万不要用goto,代码会乱七八糟
5.6 try语句块和异常处理
throw表达式
用于引发一个异常
//首先检查两条数据是否是关于同一种书籍的 if(item1.isbn() != item2.isbn()){ throw runtime_error("Data must refer to same ISBN"); } //如果程序执行到了这里,表明两个ISBN是相同的 cout << item1 + item2 << endl;
抛出异常将终止当前的函数,并把控制权转移给能处理该异常的代码。
try语句块
try语句块中抛出的异常由对应的catch语句处理
try{ }catch(错误类型1){ }catch(错误类型2){ }//...
while(cin >> item1 >> item2){ try{ }catch(runtime_error err){ cout<< err.what() << "\nTry Again? Enter y or n" << endl; char c; cin >> c; if(!cin || c == 'n'){ break; } } }
每个标准库异常类都定义了名为what的成员函数,这些成员函数没有参数。说明错误的原因
如果一段程序没有try语句块且发生了异常,系统会调用terminate函数并终止当前程序的执行。
标准异常