Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Листинги / Листинги / 18_06_Except

.cpp
Скачиваний:
5
Добавлен:
24.03.2016
Размер:
1.2 Кб
Скачать
#include <windows.h>
#include <iostream.h>

EXCEPTION_RECORD  er;

DWORD filter_function(EXCEPTION_POINTERS *p)
{
  // сохраняем содержимое структуры EXCEPTION_RECORD
  er = *(p->ExceptionRecord);
  // передаем управление обработчику исключений
  return EXCEPTION_EXECUTE_HANDLER;
}

int main()
{
  int a = 10;
  int b = 20;
  DWORD Arguments[2];

  __try
  {
    if (a < b)
    {
      // устанавливаем аргументы исключения
      Arguments[0] = a;
      Arguments[1] = b;
        // генерируем исключение
      RaiseException(0xFF, 0, 2, Arguments);
    }
    else
    {
      cout << "There is no any exception." << endl;
      cout << "a - b = " << (a - b) << endl;
    }
  }
  __except(filter_function(GetExceptionInformation()))
  {
    cout << "There is an exception." << endl;
    
    if (er.ExceptionCode == 0xFF)
    {
      cout << "Exception code = " << hex << er.ExceptionCode << endl;
      cout << "Number parameters = " << dec << er.NumberParameters 
           << endl;
      cout << "Parameter[0] = " << er.ExceptionInformation[0] << endl;
      cout << "Parameter[1] = " << er.ExceptionInformation[1] << endl;
    }
  }

  return 0;
}
Соседние файлы в папке Листинги