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.