Sunteți pe pagina 1din 2

Exception Handling- The try, catch, and throw Statements

Sintaxa:

try-bloc:
try instructiune-compusa handler-list

handler-list:
handler handler-listopt

handler:
catch(declaratia-de-exceptie) instructiune-compusa

declaratia-de-exceptie:
lista-tipurilor-de-specificatori declarator
lista-tipurilor-de-specificatori declarator-abstract
lista-tipurilor-de-specificatori

throw-expresion:
throw expresie-de-asignareopt

Instructiunea compusă de după try este secţiunea supravegheată a codului. Expresia throw “aruncă” o excepţie.
Instrucţiunea compusă de după catch este manipulatorul de excepţie, şi manipulează exceţia scoasă la iveală de
throw. Declaraţia de excepţie indică tipul de excepţie pe care instrucţiunea o tratează.

Operandul lui throw este similar sintactic unuia din instructiunea return.

Execuţia:

1. Controlul ajunge la try. Secţiunea de supraveghere din try este executată.


2. Dacă nici o excepţie nu apare în timpul execuţiei secţiunii supravegheate, catch nu este executată.
3. Dacă apare o excepţie se rulează catch dacă prevede tratarea tipului respectiv de exepţie.
Exemplu:

#include<iostream.h>

void main(void)
{
int i = 0;
cout<<"Introduceti un numar intre 2 – 10: ";
cin>>i;

try
{
if(i>10)
throw "Depasire superioara a domeniului precizat"; //ptr la sirul de fata
if(i<2)
throw "Depasire inferioara a domeniului precizat"; //ptr la sirul de fata
if((2<i)&&(i<10))
throw i; //se arunca un int
}

catch(char *s) //catch prevede tratarea exceptiei pointer la sir


{
cout<<"Eroarea este: "<<s<<endl;
}

catch(int n) //catch prevede tratarea exceptiei de tip “int” aruncata de throw


{
cout<<n<<endl; //se afiseaza chiar numarul introdus de la tastatura
}
}

S-ar putea să vă placă și