结构化异常处理

来源:互联网 发布:手机日常生活必备软件 编辑:程序博客网 时间:2024/05/23 00:08

      结构化异常处理(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 0
原创粉丝点击