windows 核心编程 (终止处理程序)

本文介绍了结构化异常处理(SEH)的概念及其在代码中的应用,解释了如何通过SEH将主要功能编写与异常处理分离。此外,还探讨了局部展开的过程,即在try模块中遇到return等操作时如何保存返回值并执行finally模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1、结构化异常处理(SEH)

 

      使用SEH,并不意味着可以完全忽略代码中可能出现的错误,但是我们可以将软件主要功能编写和软件异常情况处理这两个任务分开。

      SEH实际上包含两方面的功能:终止处理和异常处理。

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

     语法:

            __try

          {

                     //被保护代码块

           }

            __finally

           {

                    //终止处理程序

            }

            除非调用ExitProcess , ExitThread , TerminateProcess , TerminateThread 来终止线程或进程,否则,只要程序要非正常离开被保护代码,终止处理程序会被调用。

 

    2、局部展开

  

         当try模块中出现 return , goto ,longjump 等要离开try模块时,编译器就会生成一些代码先将返回值保存在一个由它创建的临时变量里,然后再执行finally模块,这个过程称为“局部展开”。一旦finally代码块执行完毕,编译器所创建的临时变量的值会返回给函数的调用者。

       

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值