13.5 本章小结
通过本章的学习,可以掌握VC++6.0对C++异常的处理和分派过程的内幕,在此基础上,总结出了还原try、throw、catch等语句的常用办法。大家不理会C++异常处理的实现,直接阅读13.4节中识别异常处理的要点,也能完成对VC++6.0所编译的程序的分析。但是,各个编译器对C++异常处理的实现不同,在遇到其他的编译器时,需要重新分析此编译器对C++异常处理的实现细节,从而总结出分析方法和规律。
本章是本书理论部分的最后一章,从下一个章节开始重点讲解实例。本章的内容担负着承上启下的重任,笔者建议大家先泛读本章,然后重点学习并实践13.4节的内容,最后在13.1~13.3节的指导下,上机分析并调试VC++所产生的C++异常处理和分派代码(即分析_CxxFrameHandler函数的实现过程)。这样一方面可以加深对本章的理解;另一方面也为后面章节的实战做了热身运动,何乐而不为呢?
最后,需要解释一下,为什么本书没有讲解C++特性中的模板以及运算符重载等方面的内容。原因很简单,因为模板和运算符重载没有还原依据。对于模板函数和模板类,编译器在生成目标代码前,将模板函数和模板类按参数的情况生成了多个声明和定义(C++称之为“模板实例化”),然后才进行编译。对于运算符重载,其行为和函数调用完全一致。