Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
Paskaitų konspektai - Matematikos ir Informatikos fakultetas ...
You also want an ePaper? Increase the reach of your titles
YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.
4. Klaidų m÷tymas <strong>ir</strong> gaudymas (exception handling)<br />
Raktiniai žodžiai throw, try <strong>ir</strong> catch<br />
Prisiminkime dinaminį sveikųjų skaičių steką:<br />
// dynastack.cpp<br />
class Stack<br />
{<br />
...<br />
public:<br />
...<br />
void push (int element);<br />
int pop ();<br />
int peek ();<br />
bool isEmpty ();<br />
};<br />
Metodas pop išima iš steko v<strong>ir</strong>šaus elementą <strong>ir</strong> jį grąžina. Jei stekas tuščias, grąžina<br />
nulį:<br />
int Stack::pop ()<br />
{<br />
if (size > 0)<br />
return elements[--size];<br />
return 0;<br />
}<br />
Tokiu būdu, klaidingai parašyta steko naudojimo programa, kuri netikrina požymio<br />
isEmpty, gali s÷kmingai traukti iš steko nulius kiek panor÷jusi. Daugeliu atveju, tokia<br />
situacija yra nepageidaujama. Šioje vietoje C++ siūlo patogų klaidų aptarnavimo<br />
mechanizmą: klaidų m÷tymą <strong>ir</strong> gaudymą (exception handling). Metodas pop gali<br />
"mesti" klaidą, naudodamasis raktiniu žodeliu throw, o kodas, kviečiantis metodą<br />
pop, gali gaudyti klaidas raktinių žodžių try <strong>ir</strong> catch pagalba:<br />
int Stack::pop ()<br />
{<br />
if (size > 0)<br />
return elements[--size];<br />
throw string("pop() called for empty stack");<br />
}<br />
Tokiu būdu, kai stekas tuščias, vietoje to, kad grąžinti beprasmę reikšmę, mes<br />
102