|
| БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО! |
|
|
GetExceptionCode
The GetExceptionCode function retrieves a code that identifies the type of exception that occurred. The function can be called only from within the filter expression or exception-handler block of a try-except exception handler.
DWORD GetExceptionCode(VOID)
Parameters
This function has no parameters.
Return Values
The return value identifies the type of exception. Following are the exception codes likely to occur due to common programming errors:
Value Meaning EXCEPTION_ACCESS_VIOLATION The thread attempted to read from or write to a virtual address for which it does not have the appropriate access. EXCEPTION_BREAKPOINT A breakpoint was encountered. EXCEPTION_DATATYPE_MISALIGNMENT The thread attempted to read or write data that is misaligned on hardware that does not provide alignment. For example, 16-bit values must be aligned on 2-byte boundaries, 32-bit values on 4-byte boundaries, and so on. EXCEPTION_SINGLE_STEP A trace trap or other single-instruction mechanism signaled that one instruction has been executed. EXCEPTION_ARRAY_BOUNDS_EXCEEDED The thread attempted to access an array element that is out of bounds, and the underlying hardware supports bounds checking. EXCEPTION_FLT_DENORMAL_OPERAND One of the operands in a floating-point operation is denormal. A denormal value is one that is too small to represent as a standard floating-point value. EXCEPTION_FLT_DIVIDE_BY_ZERO The thread attempted to divide a floating-point value by a floating-point divisor of zero. EXCEPTION_FLT_INEXACT_RESULT The result of a floating-point operation cannot be represented exactly as a decimal fraction. EXCEPTION_FLT_INVALID_OPERATION This exception represents any floating-point exception not included in this list. EXCEPTION_FLT_OVERFLOW The exponent of a floating-point operation is greater than the magnitude allowed by the corresponding type. EXCEPTION_FLT_STACK_CHECK The stack overflowed or underflowed as the result of a floating-point operation. EXCEPTION_FLT_UNDERFLOW The exponent of a floating-point operation is less than the magnitude allowed by the corresponding type. EXCEPTION_INT_DIVIDE_BY_ZERO The thread attempted to divide an integer value by an integer divisor of zero. EXCEPTION_INT_OVERFLOW The result of an integer operation caused a carry out of the most significant bit of the result. EXCEPTION_PRIV_INSTRUCTION The thread attempted to execute an instruction whose operation is not allowed in the current machine mode. EXCEPTION_NONCONTINUABLE_EXCEPTION The thread attempted to continue execution after a noncontinuable exception occurred.
Remarks
The GetExceptionCode function can be called only from within the filter expression or exception-handler block of a try-except statement. The filter expression is evaluated if an exception occurs during execution of the try block, and it determines whether the except block is executed. The following example shows the structure of a try-except statement.
try { /* try block */ } except (filter-expression) { /* exception handler block */ }
The filter expression can invoke a filter function. The filter function cannot call GetExceptionCode. However, the return value of GetExceptionCode can be passed as a parameter to a filter function. The return value of the GetExceptionInformation function can also be passed as a parameter to a filter function. GetExceptionInformation returns a pointer to a structure that includes the exception-code information. In the case of nested try-except statements, each statement's filter expression is evaluated until one is evaluated as EXCEPTION_EXECUTE_HANDLER or EXCEPTION_CONTINUE_EXECUTION. Each filter expression can invoke GetExceptionCode to get the exception code.
The exception code returned is the code generated by a hardware exception, or the code specified in the RaiseException function for a software-generated exception.
See Also
GetExceptionInformation, RaiseException
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
| Пригласи друзей и счет твоего мобильника всегда будет положительным! |
GetExceptionCode
Функция GetExceptionCode извлекает код, который идентифицирует тип исключения, что происходил. Функция может называться только из выражения фильтра или блока исключительного вручителя попытки-кроме исключительного вручителя.
DWORD GetExceptionCode(ПУСТОТА)
Параметры
Эта функция не имеет параметры.
Обратные Величины
Обратная величина идентифицирует тип исключения. Следующее является исключительными кодами вероятно, чтобы происходить из-за общего программирования ошибок:
Оцените Значение EXCEPTION_ACCESS_VIOLATION Резьба попытавшаяся, чтобы читаться из или записываться в виртуальный адрес для которого у него нет подходящего доступа. EXCEPTION_BREAKPOINT точечный разрыв столкнулся. EXCEPTION_DATATYPE_MISALIGNMENT Резьба попытавшаяся, чтобы читать или записывать данные, которые misaligned в аппаратные средства, что не обеспечивает выравнивание. Например, 16- битовые величины должны быть выровнены на 2- байтовых границах, 32- битовые величины на 4- байтовых границах, и так далее. EXCEPTION_SINGLE_STEP Прерывание следа или другой единственной инструкции механизма сигнализировали, что одна инструкция выполнена. EXCEPTION_ARRAY_BOUNDS_EXCEEDED Резьба попытавшаяся, чтобы иметь доступ к элементу массива, который - из границ, и используемое оборудование поддерживает проверку границ. EXCEPTION_FLT_DENORMAL_OPERAND Один из операндов на операции плавающей точки - denormal. Величина denormal - та которая слишком небольшая, чтобы представлять как плавающая точка стандартной величины. EXCEPTION_FLT_DIVIDE_BY_ZERO Резьба попытавшаяся, чтобы делить плавающую точку величины плавающей точкой делителя нуля. EXCEPTION_FLT_INEXACT_RESULT Результат операции плавающей точки не может представляться точно как десятичная дробь. EXCEPTION_FLT_INVALID_OPERATION Это исключение представляет любую плавающую точку исключения не включенное в этот список. EXCEPTION_FLT_OVERFLOW Показатель операции плавающей точки больше, чем величина допускала соответствующим типом. EXCEPTION_FLT_STACK_CHECK Стек overflowed или underflowed как результат операции плавающей точки. EXCEPTION_FLT_UNDERFLOW Показатель операции плавающей точки - менее чем величина допущенная соответствующим типом. EXCEPTION_INT_DIVIDE_BY_ZERO Резьба попытавшаяся, чтобы делить величину целого делителем целого нуля. EXCEPTION_INT_OVERFLOW Результат операции целого вызывал выполнять наиболее значимого бита результата. EXCEPTION_PRIV_INSTRUCTION Резьба попытавшаяся, чтобы выполнять инструкцию, чья операция не допущена в текущий машинный режим. EXCEPTION_NONCONTINUABLE_EXCEPTION Резьба попытавшаяся, чтобы продолжать выполнение после того, как noncontinuable исключение произошло.
Замечания
Функция GetExceptionCode может называться только из выражения фильтра или блока исключительного вручителя попытки-кроме утверждения. Выражение фильтра оценено если исключение происходит в течение выполнения пробовать блока, и это определяет независимо за исключением того блок выполнен. Следующий пример показывает структуру попытки-кроме утверждения.
попытка { /* пробовать блока */ } кроме (фильтр-выражение) { /* исключительный блок вручителя */ }
Выражение фильтра может ввести функцию фильтра. Функция фильтра не может назвать GetExceptionCode. Тем не менее, обратная величина GetExceptionCode может быть пройдена как параметр в функцию фильтра. Обратная величина функции GetExceptionInformation может также пройдена как параметр в функцию фильтра. GetExceptionInformation ВОЗВРАЩАЕТ указатель в структуру, которая включает исключительную-кодовую информацию. В случае вложенной попытки-кроме утверждений, каждое выражение фильтра утверждения оценено до один оценен как EXCEPTION_EXECUTE_HANDLER или EXCEPTION_CONTINUE_EXECUTION. Каждое выражение фильтра может ввести GetExceptionCode, чтобы получать исключительный код.
Возвращанный исключительный код является кодом генерировался аппаратным исключением, или код определялся в функции RaiseException для сгенерированного программного исключения.
Смотри Также
GetExceptionInformation, RaiseException
|
|
|
|
| |