{
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;
//---------------------------------------------------------------------------
__fastcall
TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
void __fastcall
TForm1::Button1Click(TObject *Sender)
{
Достарыңызбен бөлісу: