C++ Primer 5_语句

语句

之前学过的基础性的东西我将不会在此再做重复,如果有一些我之前从未注意过或从未深思过的事情以及一些重点,我都将会在此写下。

使用空语句时应该加上注释,从而令读这段代码的人知道该语句是有意省略的。
别漏写分号也别多写分号,多余的空语句并不总是无害的。

else 与他距离最近的尚未匹配的 if 相匹配。
用花括号进行路径控制,可避免错误。

即使不准备在 default 标签下做任何工作,定义一个 default 标签也是有用的。
其目的在于告诉程序的读者,我们已经考虑到了默认的情况,只是目前什么也没做。
标签不应该孤零零地出现,它后面必须跟上一条语句或者另外一个 case 标签。
如果 switch 结构以一个空的 default 标签作为结束,
则该 default 标签后面必须跟上一条空语句或一个空块。

不能通过范围 for 语句增加 vector 对象。

do while 语句应该在括号包围起来的条件后面用一个分号表示语句结束。
do {

} while( );

因为对于 do while 来说先执行语句或者块,后判断条件,所以不允许在条件部分定义变量:
do {
// …
mumble (foo) ;
} while (int foo = get_foo( ) ); //错误:将变量声明放在了do的条件部分
如果允许在条件部分定义变量,则变量的使用出现在定义之前,这显然是不合常理的!

异常处理机制为程序中异常检测和异常处理这两部分的协作提供支持。在 C++ 语言中,异常处理包括:
• throw 表达式(throw expression),异常检测部分使用 throw 表达式来表示它遇到了无法处理的问题。我们说 throw 引发(raise)了异常。
• try 语句块(try block),异常处理部分使用 try 语句块处理异常。try 语句块以关键字 try 开始,并以一个或多个 catch 子句(catch clause)结束。try 语句块中代码抛出的异常通常会被某个 catch 子句处理。因为 catch 子句“处理”异常,所以它们也被称作异常处理代码(exception handler)。
• 一套异常类(exception class),用于在 throw 表达式和相关的 catch 子句之间传递异常的具体信息。

如果最终没能找到任何匹配的 catch 子句,程序转到名为 terminate 的标准库函数。
该函数的行为与系统有关,一般情况下,执行该函数将导致程序非正常退出。

标准库异常类只定义了几种运算,包括创建或拷贝异常类型的对象,以及为异常类型的对象赋值。
我们只能以默认初始化的方式初始化 exception、bad_alloc 和 bad_cast 对象,不允许为这些对象提供初始值。
其他异常类型的行为则恰好相反:
应该使用 string 对象或者 C 风格字符串初始化这些类型的对象,但是不允许使用默认初始化的方式。
当创建此类对象时,必须提供初始值,该初始值含有错误相关的信息。

异常类型只定义了一个名为 what 的成员函数,该函数没有任何参数,返回值是一个指向 C 风格字符串的const char*。该字符串的目的是提供关于异常的一些文本信息。
what 函数返回的 C 风格字符串的内容与异常对象的类型有关。如果异常类型有一个字符串初始值,则 what 返回该字符串。对于其他无初始值的异常类型来说,what 返回的内容由编译器决定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值