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ă.