Читайте также: |
|
Далее приведен пример обработки исключений и заврешений, реализованный в среде 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;
}
}
//----------------------------------------------------
Контрольные вопросы
- EXCEPTION_EXECUTE_HANDLER
- EXCEPTION_CONTINUE_SEARCH
- EXCEPTION_CONTINUE_EXECUTION
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
);
UINT SetErrorMode(
UINT uMode // SEM_NOGPFAULTERRORBOX
);
- EXCEPTION_EXECUTE_HANDLER
- EXCEPTION_CONTINUE_SEARCH
- EXCEPTION_CONTINUE_EXECUTION
Дата добавления: 2015-07-19; просмотров: 47 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Фильтры и обработчики исключений | | | Краткие сведения из теории |