catch (
int i)
{ //
int типті ЕЖ ӛңдеуші код
}
catch (
char * str)
{ //
char* типті ЕЖ ӛңдеуші код
}
catch (...)
{ //кез-келген типті ЕЖ ӛңдеуші код
}
Жаттығу жұмыстары 1-жаттығу. Консолдық қосымшада қарапайым ЕЖ ӛңдеуді орындап кӛру.
#include #include #include #pragma hdrstop
//---------------------------------------------------------------------------
#pragma argsused
int main()
{
double d = 1.0;
for (
int i=0; i<4; i++)
{
try {
cout << endl<< "try-block bastaldi..." <switch (i)
{
case 0:
throw " goldi laktiru "; // char* типті жолды лақтыру
case 1:
throw 5; // int.-бүтінді лақтыру.
default: throw d; // double –ді лақтыру.
}
// Келесі оператор ЕЖ байланысты орындалмай
cout<< "Byl try-block-ka bailanisti orindalmaidi" << endl;
} // try-блоктың соңы
catch (
int i)
{ // int типті ЕЖ ӛңдеуші код
cout << "
Int laktirildi /thrown /: " << 1 << endl;
}
catch (char* str)
{ //char* типті ЕЖ ӛңдеуші код
cout << "string-gol laktirildi: " << str << endl;
}
catch (...) { //Кез-келген ЕЖ ӛңдеуші код
cout << "kalgan type laktirildi."<< "Program will.terminate." << endl;
cin.ignore () ;
return -1; // Программадан шығу
}
cout<< "sikldin soni"<< endl;
} // циклдың соңы.
cout << "progr soni" << endl; // Бұл операторлар орындалмайды
себебі, үшінші
catch (...) //программаны аяқтап тастайды
return 0;
}
Бұл мысалда цикл тӛрт рет орындалуы керек. Цикл ішінде
і - цикл параметрінің
мәндеріне сәйкес
int, char* және
double типті ЕЖ шақыратын қорғалған блок орналасқан.
і=0 болғанда
throw операторы
char* типті
жолды лақтырады, ал оны
char* типті екінші
тұрған ӛңдеуші ұстап алады да, соған сәйкес жазуды шығарады, себебі кодта содан басқа
ештеңе жазылмаған, тура сол сияқты і=1 болғанда қорғалған блоктағы
throw операторы
int типті ЕЖ лақтырады, оны бірінші тұрған
catch(int i) ӛңдейді. і=2 болғанда
double типті
ЕЖ пайда болады, ал оған сәйкес
catch қарастырылмаған, бірақ оны кез-келген жағдай үшін
орындалатын үшінші
catch (...) ұстайды және ондағы кодтағы
cin.ignore () және
return -1 ;
командалары программадан шығуды немесе аяқтауды орындайды, яғни цикл тӛртінші рет
і=3 үшін орындалып үлгермейді.
Программаның нәтижесі:
2-жаттығу. Windows-ға арналған қосымшада қарапайым ЕЖ-ды
1.
жалпы ӛңдеушінің /глобальный обработчик/ кӛмегімен орындап кӛру;
2.
дербес ӛңдеуші кӛмегімен орындап кӛру.
Дербес ӛңдеушінің жұмысын кӛру үшін жалпы ӛңдеушіні уақытша тоқтата тұру керек,
ол үшін
Tools -> Debugger Options командаларын орындап, пайда болған терезеде
Language Exceptions жапсырмасының
Stop on Delphi Exceptions және
Stop On C++ Exceptions немесе
Integrated debugging опцияларындағы флажокты алу керек /4.14(А,Б,С)-4.15(А,Б,С) суреттер/
.
Программа мәтіні: #pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
//---------------------------------------------------------------------------