dwExeptionCode - код, що ідентифікує заявлене виключення dwExeptionFlags - показує, чи являється виключення відновлюваним. Може
приймати |
значення |
EXEPTION_CONTINUABLE |
та |
EXEPTION_NONCONTINUABLE |
|
nNumberOfArguments - вказує кількість аргументів, що передаються в масиві lpArguments
lpArguments - адреса масиву 32-бітних аргументів
Якщо оператор в захищеному тілі кода заявляє виключення, відбувається оцінка фільтруючого виразу. Результат оцінки визначає потік управління. Фільтруючий вираз може набувати таких значень:
EXCEPTION_EXECUTE_HANDLER - управління передається на блок-
обробник виключення
EXCEPTION_CONTINUE_SEARCH - управління на асоційований блокобробник не передається. Стек розмотується і відбувається пошук іншого обробника
EXCEPTION_CONTINUE_EXECUTION - пошук припиняється і управління повертається в те місце, де було заявлене виключення Приклад:
#include <excpt.h> #include <stdio.h>
#define EXCEPTION_ERROR_CODE 0x1000L void doSomething(void)
{printf(“намагаємось що-небуть зробити \n”; printf(“Увага! Виявлена помилка \n”); printf(“Увага! Виявлена помилка \n”);
RaiseException( EXCEPTION_ERROR_CODE, EXCEPTION_CONTINUABLE,0,0);} int main()
{ __try{ doSomething();}
__except (EXCEPTION_EXECUTE_HANDLER)
{printf(“Виключення перехоплено...\n”); return 0;}
2.3.1.3 Фільтруючий вираз
Фільтуючий вираз часто викликає функцію, яка називається функцією фільтра. Ця функція як правило, приймає один чи кілька параметрів, що описують виключення і вертає одне з трьох можливих значень фільтруючого виразу. Фільтруючий вираз та блок обробки виключення можуть отримати доступ до інформації про виключення, викликаючи наступні функції:
GetExceptionCode() -повертає код, який ідентифікує заявлене виключення