- try – blok v ktorom očakávame vznik výnimky
- catch – blok, ktorý ošetruje výnimku, ktorá nastala ( napr. chybovým hlásením, ktoré si vytvoríme, alebo už vytvoreným hlásením )
- throw – príkaz pre umelé vyvolanie výnimky
Ukážeme si na našom známom programe automat toto ošetrenie.
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int suma,peniaze,cenalistka,pocet,desatsk,patsk,dvesk,sk;
desatsk = 0;
patsk = 0;
dvesk = 0;
sk = 0;
suma = 0;
peniaze = 0;
pocet = 0;
try {
cenalistka = LabeledEdit5->Text.ToInt(); //
pocet = LabeledEdit6->Text.ToInt();
peniaze = LabeledEdit7->Text.ToInt();
}
catch (Exception &e){ ShowMessage("Toto by som na tvojom mieste nerobil :)");
}
Zbytok programu je nezmenený, až na jednu svorkovú zátvorku. Celý program s blokmi try a catch si môžete stiahnuť tu. Zložitejší program aj s grafickými úpravami nazvaný euro konverter, kde sú tiež použité ošetrenia try a catch si môžete stiahnuť tu.
Bližšie si rozoberieme sekciu catch. V zátvorke za catch sa nachádza, identifikátor, o aký typ výnimky/chyby sa jedná, ktorú očakávame. Označenie &e je meno, akým sme si nazvali túto chybu. Ak by sme niekde v programe chceli vyvolať túto výnimku stačí napísať throw (e) C++ Builer má všetky chyby, ktoré môžu nastať ošetrené už vytvorenými chybovými hláseniami. My si však vytvoríme jednoduché pomocou príkazu ShowMessage. Do úvodzoviek jednoducho napíšeme vlastné chybové hlásenie.
catch (Exception &e){
ShowMessage("Toto by som na tvojom mieste nerobil :)");
}
Niekoľko typov predvolených ošetrení.
|
EConvertError |
Chyba pri konverzií |
|
EDivByZero |
Chyba pri delení nulou |
|
EAccesViolation |
Nepovolený prístup do pamäti |
|
EOutOfMemory |
Neúspešný pokus o alokovanie pamäti |
|
Exception |
Chyba akéhokoľvek charakteru |
Napr.
catch (EConvertError &e){
ShowMessage("Toto by som na tvojom mieste nerobil :)");
}
Teraz prejdeme na tvorbu funkcií v C++ Builderi. Je to možné aj ručne, ale C++ Builder nám to umožňuje jednoducho. Naľavo v Class Exploreri s klikneme pravým tlačidlom myši na TForm1 a vyberieme z popup menu možnosť New Method.
Vyplníme okienko, ktoré sa nám otvorí podľa vzoru obrázku:
Po kliknutí na ok sa nám zobrazí niečo takéto:
void TForm1::funkcia(void)
{
//TODO: Add your source code here
}
Slová void znamenajú v tomto prípade, že funkcia nevracia žiadny parameter, ani vopred nedefinuje žiadnu premennú. Na program, ktorý bude mať za úlohu demonštrovať použitie funkcie si zvolíme spočítanie dvoch čísel. Pre našu funkciu si vytvoríme funkciu vyrataj a bude mať definované dve int premenné. Do formulára si vložíme 3 komponenty Edit tak, aby Edit3 bol výsledok. A tlačidlo, ktoré bude všetko spúšťať.
int TForm1::vyrataj(int a, int b) //definovanie premenných v názve funkcie
{
return(a + b); //príkaz na vrátenie výsledku, priraďujeme funkcií hodnotu a + b
}
void __fastcall TForm1::Button1Click(TObject *Sender)
{
int a,b;
a = Edit1->Text.ToInt();
b = Edit2->Text.ToInt();
Edit3->Text = vypocitaj(a,b); //volanie funkcie s parametrom
}
V budúcom dieli si predstavíme plátno, jeho možnosti a využitie. Môžeme sa tešiť, že naše programy budú potom vyzerať aj oku lahodne :).