TEMA 4. POO EXCEPTII JAVA. TRATAREA EXCEPTIILOR | Page 10
Într-o variantă a modelului standard al lanțului de responsabilitate, un
handler poate acționa ca un dispatcher, capabil să trimită comenzi în diverse
direcții, formând un tree de responsabilități. În unele cazuri, acest lucru poate
apărea recursiv, cu procesarea obiectelor care apelează obiecte de procesare de
nivel superior cu comenzi care încearcă să rezolve o parte mai mică a problemei; în
acest caz, recurența continuă până când comanda este procesată, sau întregul
arbore a fost explorat. Un interpretor XML ar putea funcționa în acest mod.
Modelul lanțului de responsabilitate este aproape identic cu modelul decoratorului,
diferența fiind că pentru decorator, toate clasele se ocupă de cerere, iar pentru
lanțul de responsabilitate, exact una dintre clasele din lanț se ocupă de cerere.
Limbajul Java pune la dispoziţie trei construcţii de bază pentru lucrul cu
excepţii:
1. instrucţiunea throw pentru emiterea excepţiilor
2. blocul try pentru delimitarea secvenţelor de cod sensibile la apariţia
excepţiilor
3. blocul catch pentru definirea secvenţei de captare şi tratare a unei excepţii; o
asemenea secvenţă se mai numeşte handler de excepţii
Clauza throws şi instrucţiunea throw
aruncarea excepţiei se face folosind cuvântul cheie throw
Pentru a lansa o excepţie, este folosită instrucţiunea throw, ce are forma:
throw Ob;
Obiectul excepţie Ob poate fi creat ca de obicei, folosind operatorul new:
I.
tip_exceptie Ob = new tip_exceptie(...);
//o instanţă a clasei tip_excepție ce extinde clasa Exception.
Crearea este însoţită de invocarea acelui constructor al clasei tip_exceptie, ce are
signatura respectivă. O excepţie fiind un obiect, ea trebuie întâi creată şi apoi
lansată.