23.1 SEH之终止处理--《Windows核心编程》结构化异常处理

(structured exception handing)SEH 包含终止处理和异常处理。本章讨论终止处理。

一、终止处理

终止处理程序确保不管一个代码块(被保护代码)如何退出的,另一个代码块(终止处理程序)总能被调用和执行。语法如下:

__try{
// Guarded body
}
__finally{
// Termination handler
}


当以下三种情况发生时,进入_finally

  • _try块代码自然执行完成
  • _try块中调用return,goto,longjump,break等导致跳出_try块时
  • _try块代码执行中由于调用其他函数发生异常,书中把这个叫做全局展开(global unwind)

注意,当调用exitthread exitprocess terminatethread terminateprocess时,不进入finally


编译器实现终止处理:

_try块中查找可能导致跳出的return、goto等语句,发现后,将finally函数在该处展开。将会导致编译时的时间开销变大

 

posted @ 2022-11-24 20:15  人类观察者  阅读(30)  评论(0编辑  收藏  举报