第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函数并终止当前程序的执行。

标准异常

【C++Primer】第5章:语句_c++