5.1
空语句,复合语句,块。
5.2
语句的作用域,定义在控制结构中的变量只在相应语句的内部可见。
5.3
if语句,嵌套if语句,悬垂else, switch语句。
switch(ch)
{
case 'a':
...
}
漏写break容易引发缺陷
5.4
迭代语句
5.5
跳转语句 break 结束内层循环,continue结束当前迭代进入下一迭代。
5.6
throw表达式,异常检测部分使用throw表达式来表示它遇到 了无法处理的问题。try语句以try关键字开始,并以一个或多个catch子句结束。异常类,用于在throw表达式和相关的catch子句之间传递异常的具体信息。
while(cin>>item1>>item2){
try{
if(item1.isbn()!=item2.isbn())
throw runtime_error("Data must refer to same ISBN");
cout<<item1+item2<<endl;
}
catch(runtime_error err){
cout<<err.what()<<"Try again? Enter y or n?<<endl;
char c;
cin>>c;
if(!cin||c=='n')
break;
}
}
函数寻找处理代码的过程中退出(找不到),程序转到terminate的标准库函数。
C++异常类,4个头文件:
exception头文件定义了最通用的异常类exception。
stdexcept头文件定义了几种常用的异常类: exception, runtime_error(运行时才能检测出的问题), range_error,运行时错误,生成的结果超出了有意义的值域范围。overflow_error,运行时错误,计算上溢。underflow_error,运行时错误,计算下溢。logic_error。domain_error invalid_argument, lenth_error,out_of_range。
new 头文件定义了bad_alloc异常类。
type_info头文件定义了bad_cast异常类型。
我们只能用默认初始化的方式初始化exception,bad_alloc, bad_cast,不允许为这些对象提供初始值。其他异常类型恰好相反,应该使用string对象或者C风格字符串初始化这些类型的对象。但是不允许默认的初始化的方式。异常类型只定义一个名为what的成员函数,该函数没有任何参数,指向c风格字符串。