结构化异常处理

      结构化异常处理(Structured Exception Handling,简称SEH)是Windows操作系统处理程序错误或异常技术。SEH是Windows操作系统的一种系统机制,与特定的程序设计语言无关。

        Inter公司在从386开始的IA-32家族处理器中引入了中断(Interrupt)和异常(Exception)的概念。中断时由外部硬件设备或异步事件产生的。异常是由内部事件产生的,异常又可分为故障、陷阱和终止三类。故障和陷阱,正如其名所暗示的,是可恢复的;终止类异常是不可恢复的,如果发生了这种异常,系统必须重启。

        所谓异常就是在应用程序的正常执行过程中发生的不正常的事件。CPU引发的异常称为硬件异常,例如访问一个无效的内存地址。操作系统或应用程序引发的异常称为软件异常。

中断类型号

类型

相关指令

0

除数为0中断

DIV,IDIV

1

调试异常

任何指令

3

断点中断

INT3指令

4

溢出中断

INTO

5

边界检查

BOUND

6

非法指令故障

非法指令编码或操作数

7

设备不可用

浮点指令或WAIT

8

双重故障

任何指令

0Ah

无效TSS中断

JMP、CALL、IRET、中断

0Bh

段不存在异常

装载段寄存器

0Ch

堆栈段异常

装载SS寄存器或SS段寄存器

0Dh

通用保护异常

任何特权指令、任何访问存储器的指令

0Eh

页异常

任何访问存储器的指令

        除了CPU捕获一个事件并引发一个硬件异常外,在代码中可以强制引发一个软件异常。只需调用RaiseException函数:

void RaiseException(
DWORD dwExceptionCode, //标识所引发异常的代码
DWORD dwExceptionFlags, //异常继续是否执行的标识
DWORD nNumberOfArguments, //附加信息
const DWORD *lpArguments//附加信息
);
程序捕获软件异常的方法与捕获硬件异常的方法完全相同。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值