TEMA 4. POO EXCEPTII JAVA. TRATAREA EXCEPTIILOR | Page 8
motiv, compilatorul permite ca aceste exceptii sa ramana netratate, tratarea lor
nefiind însa ilegala. Reamintim însa ca, în cazul aparitiei oricarui tip de exceptie
care nu are un analizor corespunzator, programul va fi terminat.
Exemplu
Impartirea la 0 va genera o exceptie doar daca tipul numerelor împartite este
aritmetic întreg. In cazul tipurilor reale (float și double) nu va fi generata nici o
exceptie, ci va fi furnizat ca rezultat o constanta care poate fi, functie de operatie,
Infinity, -Infinity, sau Nan.
int a=1, int b=0;
System.out.println(a/b); // Exceptie la executie !
double x=1, y=-1, z=0;
System.out.println(x/z); // Infinity
System.out.println(y/z); // -Infinity
System.out.println(z/z); // NaN [2]
TRATAREA EXCEPŢIILOR [1]
Descriem în continuare modul tipic de utilizare a excepţiilor. Pentru simplificare
vom considera un singur tip de excepţie cu un unic constructor şi o unică metodă.
La construcţia următoarei clase:
class Clasa {
Clasa(..) {..}
.. Met(..)throws Exceptie {
...
if(..) throw new Exceptie(..)
..
}
}
programatorul a identificat în metoda Met o condiţie deosebită care ar putea
interveni şi de aceea a conceput şi clasa Exceptie pentru a putea prevedea acţiunile
ce trebuie întreprinse la îndeplinirea condiţiei:
class Exceptie extends Exception {
Exceptie(...) {...}
... MetExc(...) {...}
}
în mod normal, aceste activităţi sunt întreprinse o singură dată, în vederea unor
aplicaţii ce urmează a fi dezvoltate.
Pe de altă parte, clasa Exceptie poate fi folosită şi de altă clasă decât Clasa;
De exemplu atât pentru lucrul cu stive, cât şi pentru cel cu cozi, prelucrările
prevăzute pentru o încercare de adăugare a unui element în stiva/coada plină pot fi
aceeaşi.
De aceea de multe ori este natural ca cele două clase să se afle în unităţi de
compilare separate.