TEMA 4. POO EXCEPTII JAVA. TRATAREA EXCEPTIILOR | Page 9

Ulterior, programatorul scrie un program care cuprinde o clasă C, din care este invocată metoda Met a clasei Clasa, ceea ce poate conduce la lansarea excepţiei respective. Este clar că aici este locul cel mai potrivit pentru a specifica acţiunea ce trebuie întreprinsă la lansarea excepţiei. Pentru aceasta este folosită construcţia try, care captează obiectul excepţie şi prin intermediul lui invocă metoda MetExc a clasei Exceptie: class C { Clasa Ob = new Clasa(...); ... try { .... Ob.Met(...); .... } catch (Exceptie e){ ... e.MetExc(...); ... } ..... } S-a prevăzut invocarea metodei Met a clasei Clasa din interiorul construcţiei try. în cazul în care apare condiţia în discuţie, este creat un obiect de tipul Exceptie prin invocarea constructorului său. Apoi controlul este trecut clauzei catch care captează (primeşte în parametrul său) obiectul creat, ceea ce permite invocarea metodei MetExc din Exceptie. Deci, o excepţie de tipul Exceptie este lansată din clasa Clasa şi este captată în clasa C. [1] Excepţiile în contextul moştenirii [4] Metodele suprascrise (overriden) pot arunca numai excepţiile specificate de metoda din clasa de bază sau excepţii derivate din acestea. Chain-of-responsibility Pattern[4] În proiectarea orientată pe obiect, pattern-ul “Chain-of-responsibility” (lanț de responsabilitate) este un model de design constând dintr-o sursă de obiecte de comandă și o serie de obiecte de procesare. Fiecare obiect de procesare conține logică care definește tipurile de obiecte de comandă pe care le poate gestiona; restul sunt transferate către următorul obiect de procesare din lanț. De asemenea, există un mecanism pentru adăugarea de noi obiecte de procesare la sfârșitul acestui lanț. Astfel, lanțul de responsabilitate este o versiune orientată pe obiecte a if … else if … else if …… else … endif, cu avantajul că blocurile condiție- acțiune pot fi dinamic rearanjate și reconfigurate la timpul de execuție.