关于异常信息
ExceptionFlags的值为1,则表示不可继续的异常,ExceptionFlags值为0,表示可继续的异常。
那么我想问,哪些异常属于不可继续的,哪些异常又属于可继续的异常呢?
public const uint EXCEPTION_ACCESS_VIOLATION = STATUS_ACCESS_VIOLATION;
//线程试图对一个虚地址进行读或写,但没有做适当的存取
public const uint STATUS_ACCESS_VIOLATION = 0xC0000005;
public const uint EXCEPTION_ARRAY_BOUNDS_EXCEEDED = STATUS_ARRAY_BOUNDS_EXCEEDED;
//数组访问越界
public const uint STATUS_ARRAY_BOUNDS_EXCEEDED = 0xC000008C;
public const uint EXCEPTION_DATATYPE_MISALIGNMENT = STATUS_DATATYPE_MISALIGNMENT;
//线程试图读或写不支持对齐( a l i g n m e n t)的硬件上的未对齐的数据
public const uint STATUS_DATATYPE_MISALIGNMENT = 0x80000002;
public const uint EXCEPTION_FLT_DENORMAL_OPEvRAND = STATUS_FLOAT_DENORMAL_OPERAND;
//浮点操作中一个操作数不正常
public const uint STATUS_FLOAT_DENORMAL_OPERAND = 0xC000008D;
public const uint EXCEPTION_FLT_DIVIDE_BY_ZERO = STATUS_FLOAT_DIVIDE_BY_ZERO;
//试图使用浮点数0来除一个浮点数
public const uint STATUS_FLOAT_DIVIDE_BY_ZERO = 0xC000008E;
public const uint EXCEPTION_FLT_INEXACT_RESULT = STATUS_FLOAT_INEXACT_RESULT;
//浮点操作的结果不能精确表示成十进制小数
public const uint STATUS_FLOAT_INEXACT_RESULT = 0xC000008F;
public const uint EXCEPTION_FLT_INVALID_OPERATION = STATUS_FLOAT_INVALID_OPERATION;
//其他的浮点数异常
public const uint STATUS_FLOAT_INVALID_OPERATION = 0xC0000090;
public const uint EXCEPTION_FLT_OVERFLOW = STATUS_FLOAT_OVERFLOW;
//浮点数溢出
public const uint STATUS_FLOAT_OVERFLOW = 0xC0000091;
public const uint EXCEPTION_FLT_STACK_CHECK = STATUS_FLOAT_STACK_CHECK;
//浮点数造成的栈溢出或者下溢
public const uint STATUS_FLOAT_STACK_CHECK = 0xC0000092;
public const uint EXCEPTION_FLT_UNDERFLOW = STATUS_FLOAT_UNDERFLOW;
//浮点数操作的结果小于允许的值
public const uint STATUS_FLOAT_UNDERFLOW = 0xC0000093;
public const uint EXCEPTION_GUARD_PAGE = STATUS_GUARD_PAGE_VIOLATION;
//线程试图访问带有PAGE_GUARD属性的内存页
public const uint STATUS_GUARD_PAGE_VIOLATION = 0x80000001;
public const uint EXCEPTION_ILLEGAL_INSTRUCTION = STATUS_ILLEGAL_INSTRUCTION;
//线程执行了一个无效的指令
public const uint STATUS_ILLEGAL_INSTRUCTION = 0xC000001D;
public const uint EXCEPTION_IN_PAGE_ERROR = STATUS_IN_PAGE_ERROR;
//页内故障
public const uint STATUS_IN_PAGE_ERROR = 0xC0000006;
public const uint EXCEPTION_INT_DIVIDE_BY_ZERO = STATUS_INTEGER_DIVIDE_BY_ZERO;
//试图用整数0除一个整数
public const uint STATUS_INTEGER_DIVIDE_BY_ZERO = 0xC0000094;
public const uint EXCEPTION_INT_OVERFLOW = STATUS_INTEGER_OVERFLOW;
//整数溢出
public const uint STATUS_INTEGER_OVERFLOW = 0xC0000095;
public const uint EXCEPTION_INVALID_DISPOSITION = STATUS_INVALID_DISPOSITION;
//异常过滤器返回值无效
public const uint STATUS_INVALID_DISPOSITION = 0xC0000026;
public const uint EXCEPTION_INVALID_HANDLE = STATUS_INVALID_HANDLE;
//无效的句柄
public const uint STATUS_INVALID_HANDLE = 0xC0000008;
public const uint EXCEPTION_NONCONTINUABLE_EXCEPTION = STATUS_NONCONTINUABLE_EXCEPTION;
//致命异常
public const uint STATUS_NONCONTINUABLE_EXCEPTION = 0xC0000025;
public const uint EXCEPTION_PRIV_INSTRUCTION = STATUS_PRIVILEGED_INSTRUCTION;
//线程执行的指令操作在当前机器模式不被允许
public const uint STATUS_PRIVILEGED_INSTRUCTION = 0xC0000096;
public const uint EXCEPTION_SINGLE_STEP = STATUS_SINGLE_STEP;
//单步执行
public const uint STATUS_SINGLE_STEP = 0x80000004;
public const uint EXCEPTION_STACK_OVERFLOW = STATUS_STACK_OVERFLOW;
//堆栈溢出
public const uint STATUS_STACK_OVERFLOW = 0xC00000FD;
以上这些异常,哪些是可继续的,哪些不可继续呢?