C++11(4):语句

来源:互联网 发布:美姿堂专业彩妆护淘宝 编辑:程序博客网 时间:2024/06/06 03:19
case 必须是整型常量表达式
对已case内部变量的定义,变量的定义对之后的case是可见的,如果跳过了变量定义及初始化的语句,后面的case对变量的使用时为初始化的
要解决,可以把变量的定义放在以个语句块中,后面就不可见了
do while 不允许在条件部分定义变量

try{
      if(i!=j)
      throw runtime_error("no same");
     }
catch(runtime_error err)
{
       cout<<err.what();
/当i!=j是,运行结果是,no same
what()返回的是runtime_error类的string对象副本;
寻找处理的代码于函数掉用正好相反。当抛出异常,首先搜索抛出该异常的函数。如果么找到匹配的catch语句,终止该函数,并在调用该函数的函数里找,如此循环。如果最终么有找到,程序将转到名为terminate的标准库函数,该函数的行为与系统有关,一般是导致非正常退出
如果没有try语句,系统发生异常也将调用terminate函数

标准异常:(4个头文件中)
exception,定义了最常用的异常类exception。它只报告异常的发生,不提供任何额外信息。
new,定义了bad_alloc异常类型,
type_info,定义了bad_cast异常类型
stdexcept,定义了常用的异常类:如下
exception,最常见的问题
runtime_error,只有运行时才能检测出的问题
range_error,运行时错误:生成结果超出了有意义的值域范围
overflow_error,运行时错误:计算上溢
underflow_error,运行时错误,计算下溢
logic_error,程序逻辑错误
domain_error,逻辑错误:参数对应的结果值不存在
invalid_argument,逻辑错误:参数无效
length_error,逻辑错误:试图创建以个超出该类型最大长度的对象
out_of_range,逻辑错误:使用一个超出有效范围的值

只能默认初始化exception。bad_alloc和bad_cast对象,不能提供初始值。
而其他的必须提供c风格字符串const char*,或string
异常类只提供了一个成员函数what(),如果无初始值,返回值右编辑器决定
0 0