Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

Пример программы

Читайте также:
  1. III. Программа и тестовые примеры
  2. III. Программа и тестовые примеры
  3. III. Программа и тестовые примеры
  4. III. Программа и тестовые примеры
  5. IV. Примеры анализа рекламных сообщений
  6. IV.Индивидуальная работа с учащимися (пример)
  7. VI. Предложения по целям и задачам Программы

Далее приведен пример обработки исключений и заврешений, реализованный в среде Borland C++ Builder 6 в виде приложения с графическим интерфейсом.

 

#include <vcl.h>

#pragma hdrstop

 

#include "Main.h"

#include "Math.h"

//----------------------------------------------------

#pragma package(smart_init)

#pragma resource "*.dfm"

char* create(int type)

{

if(type==0) __asm ud2;

return "Выполнено";

}

int MyFilter(int code)

{

if (code == EXCEPTION_ILLEGAL_INSTRUCTION)//Поток выполнил недопустимую инструкцию

return EXCEPTION_EXECUTE_HANDLER; //выполним обработку в блоке except

return EXCEPTION_CONTINUE_EXECUTION; //не выполнять обработку

}

TForm1 *Form1;

//----------------------------------------------------

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{

}

//----------------------------------------------------

void __fastcall TForm1::Button1Click(TObject *Sender)

{

__try{

__try

{

ShowMessage(create(Edit1->Text.ToInt()));

}

__finally {

// выполняющийся в любом случае код

ShowMessage("Финальный блок выполнен!");

}

}

__except (MyFilter(GetExceptionCode()))

{

ShowMessage("Исключение сгенерировано!");

Edit1->Text=1;

 

}

}

//----------------------------------------------------

Контрольные вопросы

  1. Что представляет собой структурная обработка исключений (structured exception handling, SEH)?
  2. Для чего служит обработчик завершения (termination handler)?
  3. Что представляет собой локальная раскрутка (local unwind)?
  4. В каких случаях выполняется блок finally? Назвать три сценария.
  5. Как и для чего используется функция
    BOOL AbnormalTermination(VOID)
  6. Что представляют собой аппаратные и программные исключения?
  7. Для чего служит обработчик исключений (exception handler)?
  8. Как используются и каково назначение следующих фильтров исключений:

- EXCEPTION_EXECUTE_HANDLER

- EXCEPTION_CONTINUE_SEARCH

- EXCEPTION_CONTINUE_EXECUTION

  1. С какой инструкции возобновляет свою работу приложение после обработки исключения?
  2. Как и для чего используются функции
    DWORD GetExceptionCode(VOID);
    LPEXCEPTION_POINTERS GetExceptionInformation(VOID);
  3. В каком случае исключение является вложенным?
  4. Как и для чего используется функция

VOID RaiseException(

DWORD dwExceptionCode, // 31-30:severity, 29=1:user,

// 28=0, 27-l6:facility code, 15-0

DWORD dwExceptionFlags, // 0, EXCEPTION_NONCONTINUABLE

DWORD nNumberOfArguments, // EXCEPTION_MAXIMUM_PARAMETERS

CONST DWORD *lpArguments

);

  1. Как и для чего используется функция

UINT SetErrorMode(

UINT uMode // SEM_NOGPFAULTERRORBOX

);

  1. Что происходит в случае возврата из Вашего фильтра необработанных исключений следующих идентификаторов:

- EXCEPTION_EXECUTE_HANDLER

- EXCEPTION_CONTINUE_SEARCH

- EXCEPTION_CONTINUE_EXECUTION


Дата добавления: 2015-07-19; просмотров: 47 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Фильтры и обработчики исключений| Краткие сведения из теории

mybiblioteka.su - 2015-2024 год. (0.005 сек.)