GetExceptionCode

【勇芳软件工作室】汉化HomePreviousNext

GetExceptionCode函数检索一个代码,该代码标识发生的异常类型。该函数只能从尝试 - 异常处理程序的过滤器表达式或异常处理程序块中调用。

DWORD GetExceptionCode(VOID)

参数

此函数无参数。

返回值

返回值标识异常的类型。以下是由于常见的编程错误而可能发生的异常代码:

含义
EXCEPTION_ACCESS_VIOLATION 
 线程尝试从不具有适当访问权限的虚拟地址读取或写入该虚拟地址。
EXCEPTION_BREAKPOINT 
 遇到断点。
EXCEPTION_DATATYPE_MISALIGNMENT 
 线程尝试读取或写入不提供对齐的硬件上未对齐的数据。例如,16位值必须在2字节边界对齐,32位值在4字节边界上等等。
EXCEPTION_SINGLE_STEP 
 跟踪陷阱或其他单指令机制发出信号,指示一条指令已被执行。
EXCEPTION_ARRAY_BOUNDS_EXCEEDED 
 线程尝试访问超出边界的数组元素,底层硬件支持边界检查。
EXCEPTION_FLT_DENORMAL_OPERAND 
 浮点运算中的一个操作数是不正常的。异常值是一个太小的值,不能表示为标准浮点值。
EXCEPTION_FLT_DIVIDE_BY_ZERO 
 线程尝试将浮点值除以零的浮点除数。
EXCEPTION_FLT_INEXACT_RESULT 
 浮点运算的结果不能精确地表示为小数。
EXCEPTION_FLT_INVALID_OPERATION 
 此异常表示此列表中未包含的任何浮点异常。
EXCEPTION_FLT_OVERFLOW 
 浮点运算的指数大于相应类型所允许的大小。
EXCEPTION_FLT_STACK_CHECK 
 由于浮点运算,堆栈溢出或下溢。
EXCEPTION_FLT_UNDERFLOW 
 浮点运算的指数小于相应类型允许的数值。
EXCEPTION_INT_DIVIDE_BY_ZERO 
 线程尝试将整数值除以零的整数除数。
EXCEPTION_INT_OVERFLOW 
 整数运算的结果导致结果的最高有效位的进位。
EXCEPTION_PRIV_INSTRUCTION 
 线程尝试执行在当前机器模式下不允许其操作的指令。
EXCEPTION_NONCONTINUABLE_EXCEPTION 
 线程尝试在发生不可持续异常后继续执行。

备注

只能从尝试 - 语句的过滤器表达式或异常处理程序块中调用GetExceptionCode函数。如果尝试块执行期间发生异常,则会评估过滤器表达式,并确定是否执行块。以下示例显示尝试 - 语句的结构。

尝试{

/ * try block * /

}

except(filter-expression){

/ *异常处理程序块* /

}

过滤器表达式可以调用过滤器函数。过滤功能无法调用GetExceptionCode.但是,返回值GetExceptionCode可以作为参数传递给过滤器函数。GetExceptionInformation函数的返回值也可以作为参数传递给过滤器函数。GetExceptionInformation返回一个指向包含异常代码信息的结构的指针。

在嵌套尝试 - 语句的情况下,将对每个语句的过滤器表达式进行求值,直到被评估为EXCEPTION_EXECUTE_HANDLER或EXCEPTION_CONTINUE_EXECUTION为止。每个过滤器表达式可以调用GetExceptionCode来获取异常代码。

返回的异常代码是由硬件异常生成的代码,或由软件生成的异常的RaiseException函数中指定的代码。

也可以看看

GetExceptionInformation, RaiseException