1. 异常处理机制
C++中使用try,throw和catch三个关键字来实现异常的触发、抛出和处理的功能,具体通用语法形式如下:
try{
if(true)
normal program-statements;//没有触发异常时候执行的代码
if(false)
throw(exception); //出现错误,抛出的异常
}catch(exception-declaration) //异常捕捉
handler-statements; //异常处理
}.....
C++标准库定义了一组类,用于处理标准库中遇到的问题(支持创建/拷贝/赋值操作),具体如下:
头文件<exception> 异常类exception 只报告异常,不提供其他信息。默认初始化
头文件<new> 异常类 bad_alloc 默认初始化
头文件<type_Info> 异常类 bad_cast 默认初始化
头文件<stdexcept> 异常类,如下所示:string/C风格字符串初始化
异常类型定义了一个what的成员函数,无参数,返回值为C风格字符串,和异常类型相关。异常类采用显示初始化的,则返回显示初始化的值,异常类是采用默认初始化的,内容由编译器决定。
2.case,范围for语句,continue知识点总结
在switch-case语句中,如果每个case语句后面不加上break中止符,则case语句会跨越标签继续执行下去。例如:
char ch;cin>>ch;
switch(ch){
case 'a' : ++acnt; //如果输入的ch字符是‘a’,判断第一个case语句满足,执行完++acnt后
case 'e' : ++ecnt; //会跳过第二个case语句,执行++ecnt;
}
在switch-case语句中,case标签不能单独出现,后面应该跟上一条语句或者另外一个case标签。也就是说,case标签后面可以不接语句,但是冒号必须保留。
范围for语句中的expression(范围for语句格式:for(declaration : expression) statement)必须是一个序列,其中序列的头指针和尾后指针已经确定,因此在使用范围for语句的时候,不允许往序列中增加或删除元素(任何破坏头指针和尾后指针的行为都不允许)
continue不允许直接使用在switch-case中,具体原因是continue是跳出当前循环并进入下一次循环,而是switch-case只有一次循环操作。