首页 > 系统相关 >23.1 SEH之终止处理--《Windows核心编程》结构化异常处理

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

时间:2022-11-24 20:23:01浏览次数:49  
标签:调用 处理 -- try Windows finally 23.1 终止 SEH

(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函数在该处展开。将会导致编译时的时间开销变大

 

标签:调用,处理,--,try,Windows,finally,23.1,终止,SEH
From: https://www.cnblogs.com/renleiguanchashi/p/16923120.html

相关文章

  • 删除5天前旧日志 以防日志占用大量硬盘空间
    ///<summary>///删除5天前旧日志以防日志占用大量硬盘空间///</summary>publicstaticvoidDelOverdueFiles(intdays=5){......
  • springboot事务处理
        ......
  • Dubbo源码-04-SPI
    一DubboSPI核心核心实现都在ExtensionLoader中,比较重要的3个入口方法分别是ExtensionLoader#getExtensionLoader()扩展实现的加载器ExtensionLoader#getDefaultExte......
  • 字段约束条件
    字段约束条件无符号、零填充unsigned#无符号idintunsignedzerofill#零填充idint(3)zerofill#存入数字不足三位时以0填充至三位非空createt......
  • 对象——删属性
    删除属性deleteobj.xxx或者deleteobj['xxx']//即可删除obj的xxx属性注意区分属性值为undefined和不含属性名//不含属性名'xxx'inobj===flase//含属性......
  • 【爬虫】 requests高级用法,代理池,爬取视频和新闻
    目录1.测试频率2.requests高级用法2.1ssl认证2.2实例2.3使用代理2.4超时设置2.5异常处理2.6上传文件3.代理池搭建3.1django后端获取客户端的ip4.爬取某视频网站......
  • CSP-2022-J 复赛题解
    \(\large\texttt{T1P8813[CSP-J2022]乘方}\)原题链接#include<iostream>#include<cstdio>#defineintlonglongusingnamespacestd;inta,b,c;intpow(int......
  • 【算法】一些有用的知识
    前言本篇文章收录那些一般不会考裸题,但是常用于算法优化等处的算法们。预计会有以下几种板块:数学字符串其他一、数学1.快速幂快速幂intqpow(intx,inty){ i......
  • 代码生成器
    根据数据库中的字段数据自动生成代码,如下:1.添加依赖<dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-boot-starter</artifactId><ve......
  • 【Python】第4章-10 最大公约数和最小公倍数
    本题要求两个给定正整数的最大公约数和最小公倍数。输入格式:输入在一行中给出两个正整数M和N(≤1000)。输出格式:在一行中顺序输出M和N的最大公约数和最小公倍数,两数字......