好了,最后更新一次C++部分,也许以后是C#,也有可能是C++泛型算法。
C++的异常处理机制包括两部分:异常的识别与发出,异常的处理方式。异常出现时,正常程序的执行被悬置。异常处理机制开始搜寻程序中有能力处理异常的地点。异常被处理后,程序才重新激活。
throw表示式用于抛出异常。异常就是某种对象,最简单可以是整数或者字符串,大部分属于特定的异常类
利用单一或连串的catch子句来捕捉被抛出的异常对象。catch子句由三部分组成:catch,小括号内的一个类型或对象,大括号内的一组语句(用于处理异常)。
catch(int err)
{}
异常对象的类型和小括号的类型进行比较,决定进入哪个异常处理。
也可以用catch(...)捕捉任何异常。
catch子句与try块相应而生。先try,再catch。try块只对当前块内的异常进行捕捉,它无法捕捉其调用的子函数内的异常。
在try块内throw异常,然后寻找相应的catch块进行处理。
C++规定,每个异常都应该被处理。如果一直找不到合适的catch子句,便调用标准程序库的terminate(),其默认行为是中止真个程序的运行。
在异常处理机制终结某个函数之前,c++保证,函数中的所有局部对象的析构函数都会被调用。
auto_ptr是标准程序库提供的类模板,会自动delete通过new表达式配置的对象。使用前,需含入<memory>。
如果new无法从自由空间(free store)中配置到足够内存,它会抛出bad_alloc异常对象。
