关闭

第六章 语句

213人阅读 评论(0) 收藏 举报

 

6.6 switch

case 必须跟整形常量表达式

switch结构中,只能在最后一个case标号或者default标号后面定义变量,当然,在块语句中可以随意定义。例如:

case true:

int a;//错了

case false;

6.7 while

赋值语句while(*a++=*b++);

6.13 try块和异常处理

http://wenku.baidu.com/view/e97095c3d5bbfd0a795673b3.html

http://wenku.baidu.com/view/ce5de1946bec0975f465e224.html

 

1)语法

try

try总是与catch一同出现,伴随一个try语句,至少应该有一个catch()语句。try随后的block是可能抛出异常的地方。

catch

catch带有一个参数,参数类型以及参数名字都由程序指定,名字可以忽略,如果在catch随后的block中并不打算引用这个异常对象的话。参数类型可以是build-in type,例如int, long, char等,也可以是一个对象,一个对象指针或者引用。如果希望捕获任意类型的异常,可以使用“...”作为catch的参数。

catch不一定要全部捕获try block中抛出的异常,剩下没有捕获的可以交给上一级函数处理。

throw

throw后面带一个类型的实例,它和catch的关系就象是函数调用,catch指定形参,throw给出实参。编译器按照catch出现的顺序以及catch指定的参数类型确定一个异常应该由哪个catch来处理。

throw不一定非要出现在try随后的block中,它可以出现在任何需要的地方,只要最终有catch可以捕获它即可。即使在catch随后的block中,仍然可以继续throw。这时候有两种情况,一是throw一个新类型的异常,这与普通的throw一样。二是要rethrow当前这个异常,在这种情况下,throw不带参数即可表达。例如:

try{
    ...
}
catch(int){
    throw MyException("hello exception");    //
抛出一个新的异常
}
catch(float){
    throw;                   //
重新抛出当前的浮点数异常
}

 

2)标准异常

标准库异常类的头文件有:

exception (类名:exception 不会提供其他信息)

stdexcept  (各种类型…)

new       ( bad_alloc 因为无法分配内存而抛出的异常)

type_info  (bad_cast)

 

使用标准异常的例子:

 

6.14使用预处理器进行调试

一些有用的常量:

__FILE__ 文件名

__LINE__ 当前的行号

__TIME__ 当前时间

__DATE__ 当前的日期

 

assert();//也是一个很好的测试工具,参数是一个表达式,当表达式为假程序会跳出

 

NDEBUG宏定义的时候assert()会失效

http://blog.csdn.net/frank28_nfls/archive/2010/06/30/5705326.aspx

 

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:18106次
    • 积分:442
    • 等级:
    • 排名:千里之外
    • 原创:29篇
    • 转载:1篇
    • 译文:0篇
    • 评论:4条
    文章存档
    最新评论