在微软的VC++中,C/C++结构化异常处理机制一共包含两部分内容:终止处理程序和异常处理程序。
其中,终止处理程序的使用与原理已经在《Visual C++异常处理机制原理与应用(一)—— C/C++结构化异常处理之try-finally终止处理的使用与原理(上)》和《Visual C++异常处理机制原理与应用(二)—— C/C++结构化异常处理之try-finally终止处理的使用与原理(下)》文章中介绍过了(其中还差全局展开和系统全局展开的原理分析留到后面进行)。这里介绍VC中C/C++结构化异常处理中的另一部分——异常处理程序。
在实际的开发中,我们常希望有如下功能:如果程序执行过程中发生异常情况,则转而执行一段特定的处理代码,比如试图对异常进行修复,或者在提示用户程序遇到问题需要关闭以及发送错误报告等操作后,优雅地退出。这种需求可以抽象概括如下:
- 如果程序正常执行,则异常处理代码不执行
- 如果程序发生异常,则执行异常处理代码
为了满足这种需求,在VC中,C/C++结构化异常处理的异常处理应运而生: