C++的语句比较简单。

关于switch...case

case部分必须是整型的常量表达式(integral constant expression,包括字符,布尔类型)。

char ch = getval();
int ival = 42;
switch(ch) {
    case 3.14: // error
    case getval: // error
}

注:其它语言,尤其是函数式语言的case表达能力更强;就连Java 7也支持在case使用字符串了。

range for语句

这是C++ 11引入的。

for (declaration: expression)
  statement

其中,expression表示一个序列(sequence)。

关于try块和异常处理

  • throw表达式,抛出异常
  • try块,需要一个或多个catch从句
if (...)
   throw runtime_error("data is error");

标准异常

有四个头文件:

  • exception,定义了名为exception的绝大部份的异常
  • stdexcept,定义了几个通用的异常类
  • new头文件里面定义的bad_alloc异常类型
  • type_info头文件定义的bast_cast异常类型

定义在stdexcept头文件的异常类:

exception
runtime_error
range_error
overflow_error
underflow_error
logic_error
domain_error
invalid_argument
length_error
out_of_range