捐助郴维网
感谢您对郴维网的支持,你的支持将是郴维网持续发展的动力!
二维码
×
当前位置:郴维网 >API档案 > 正文
1 2017.06

GetExceptionCode 宏

点击次数:1324 更新时间:2017-6-1 19:31:00  【打印此页

原文链接 -> 传送门

宏功能:

GetExceptionCode 宏用于获取标识发生的异常类型的编码。该函数只能在异常处理程序的过滤表达式或异常处理块中被使用。

注意:Microsoft C/C++ 优化编译器会将该函数解释成一个关键字,并且在适当的异常处理语法之外的使用将产生编译错误。


宏原型:

DWORD GetExceptionCode(void);


参数解析:

这个宏没有参数。


返回值:

返回值在低位字节,高位字节为 0。


备注:

返回值标识异常的类型。下表标识了因为通常的程序错误可能出现的异常码。这些值被定义在 WinBase.h 和 WinNT.h 头文件中:

返回编码

描述

EXCEPTION_ACCESS_VIOLATION

1. 线程企图从一个它不具有权限的虚拟地址读取或者写入
2. 该值被定义为 STATUS_ACCESS_VIOLATION

EXCEPTION_ARRAY_BOUNDS_EXCEEDED

1. 线程企图越界访问数组元素,并且底层硬件支持边界检查
2. 该值被定义为 STATUS_ARRAY_BOUNDS_EXCEEDED

EXCEPTION_BREAKPOINT

1. 断点被触发
2. 该值被定义为 STATUS_BREAKPOINT

EXCEPTION_DATATYPE_MISALIGNMENT

1. 线程企图在不提供对齐的硬件上读取或写入未对齐的数据(例如,16 位的值必须与 2 字节边界对齐,32 位的值必须与 4 字节的边界对齐等)
2. 该值被定义为 STATUS_DATATYPE_MISALIGNMENT

EXCEPTION_FLT_DENORMAL_OPERAND

1. 浮点数操作的操作数是非正常的。所谓非正常,即它的值太小以至于不能用标准格式表示出来
2. 该值被定义为 STATUS_FLOAT_DENORMAL_OPERAND

EXCEPTION_FLT_DIVIDE_BY_ZERO

1. 线程企图除以 0
2. 该值被定义为 STATUS_FLOAT_DIVIDE_BY_ZERO

EXCEPTION_FLT_INEXACT_RESULT

1. 浮点数操作的结果不能精确表示成小数
2. 该值被定义为 STATUS_FLOAT_INEXACT_RESULT

EXCEPTION_FLT_INVALID_OPERATION

1. 不包括在这个表内的其它浮点数异常
2. 该值被定义为 STATUS_FLOAT_INVALID_OPERATION

EXCEPTION_FLT_OVERFLOW

1. 浮点数的指数超过所能表示的最大值
2. 该值被定义为 STATUS_FLOAT_OVERFLOW

EXCEPTION_FLT_STACK_CHECK

1. 进行浮点数运算时栈发生溢出或下溢
2. 该值被定义为 STATUS_FLOAT_STACK_CHECK

EXCEPTION_FLT_UNDERFLOW

1. 浮点数的指数小于所能表示的最小值
2. 该值被定义为 STATUS_FLOAT_UNDERFLOW

EXCEPTION_GUARD_PAGE

1. 线程访问具有 PAGE_GUARD 修饰符的内存
2. 该值被定义为 STATUS_GUARD_PAGE_VIOLATION

EXCEPTION_ILLEGAL_INSTRUCTION

1. 程序企图执行一个无效的指令
2. 该值被定义为 STATUS_ILLEGAL_INSTRUCTION

EXCEPTION_IN_PAGE_ERROR

1. 程序要访问的内存页不在内存中,并且系统无法加载该页(例如,运行一个联网应用程序时网络连接丢失可能会导致该异常发生)
2. 该值被定义为 STATUS_IN_PAGE_ERROR

EXCEPTION_INT_DIVIDE_BY_ZERO

1. 整数除法的除数是 0
2. 该值被定义为 STATUS_INTEGER_DIVIDE_BY_ZERO

EXCEPTION_INT_OVERFLOW

1. 整数操作的结果产生的值太大而不足以被目标寄存器容纳。在某些情况下,这将导致结果的最高有效位进位。一些操作不会设置该进位标志
2. 该值被定义为 STATUS_INTEGER_OVERFLOW

EXCEPTION_INVALID_DISPOSITION

1. 异常处理程序返回给异常分派器无效的处理。使用高级编程语言例如 C 永远不会触发该异常
2. 该值被定义为 STATUS_INVALID_DISPOSITION

EXCEPTION_INVALID_HANDLE

1. 线程使用无效的内核对象的句柄(很可能是因为它已经被关闭)
2. 该值被定义为 STATUS_INVALID_HANDLE

EXCEPTION_NONCONTINUABLE_EXCEPTION

1. 线程在发生不可继续执行的异常之后企图继续运行
2. 该值被定义为 STATUS_NONCONTINUABLE_EXCEPTION

EXCEPTION_PRIV_INSTRUCTION

1. 程序企图执行一条当前电脑模式不允许的指令
2. 该值被定义为 STATUS_PRIVILEGED_INSTRUCTION

EXCEPTION_SINGLE_STEP

1. 每执行一条指令,一个跟踪自陷或者其他单指令机制信号将被触发
2. 该值被定义为 STATUS_SINGLE_STEP

EXCEPTION_STACK_OVERFLOW

1. 栈溢出
2. 该值被定义为 STATUS_STACK_OVERFLOW

STATUS_UNWIND_CONSOLIDATE

已执行帧合并



备注:

1. GetExceptionCode 函数只能在异常处理器的过滤表达式或者异常处理块中被调用。如果在 __try 块的执行中一个异常发生,则过滤表达式将被计算,并且它决定 __except 块是否将被执行。

2. 过滤表达式能够调用一个过滤函数。过滤函数不能调用 GetExceptionCode 函数。然而,GetExceptionCode 函数的返回值能够当作参数传递给该过滤函数。GetExceptionInformation 函数的返回值也可以当作参数传递给该过滤函数。GetExceptionInformation 函数返回一个指针,该指针指向的结构体包含异常码信息。

3. 当嵌套处理程序存在时,直到某一个过滤表达式被计算为 EXCEPTION_EXECUTE_HANDLER 或 EXCEPTION_CONTINUE_EXECUTION 之前,每一个过滤表达式都会被计算。每一个过滤表达式都可以调用 GetExceptionCode 函数来获取异常码。

4. 返回的异常码是通过硬件异常产生的编码,或软件产生的,定义在 RaiseException 函数中编码。

5. 当处理断点异常时,重要的是增加在上下文记录中的指令指针来从此异常处继续执行。


需求:

Minimum supported client

Windows 2000 专业版 [仅桌面应用程序]

Minimum supported server

Windows 2000 服务器版 [仅桌面应用程序]

Header

Wingid.h (包含于 Windows.h)


 

提示
郴维网为您提供各类专业服务:
软件开发,电脑配件销售,WIFI路由器销售,上门电脑维修,上门安装系统,系统安装,软、硬件安装,电脑除尘清灰,显示器维修,WIFI安装调试,服务器维护,数据恢复,密码破解,网络布线,网络检修,打印机维修,打印机加碳粉,苹果电脑安装系统,苹果电脑安装双系统,监控安装维护,电脑外包,笔记本电脑维修,餐饮、美容行业软件安装 等。。。。。。
点击次数:1324 更新时间:2017-6-1 19:31:00  【打印此页

上一条:GetProcessHeap

下一条:HeapFree

关键词推荐:郴州电脑城 郴州电脑维修公司 维修电脑公司 郴州软件开发 上门电脑维修 上门安装系统 笔记本电脑维修 郴州打印机维修 打印机加碳粉 电脑安装双系统 苹果电脑双系统 液晶显示器维修 联想笔记本维修 联想笔记本维修电话 戴尔笔记本维修电话 郴州戴尔笔记本维修 戴尔笔记本郴州维修点 华硕笔记本维修点 郴州华硕笔记本维修 郴州笔记本上网维修