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

(în cazul exemplului de mai sus mesajul ”Aici nu se mai ajunge...” nu va fi afisat). .[2] Aruncarea excepţiilor.[4] Exemplu de aruncare a unei excepţii: List l = getArrayListObject(); if (null == l) throw new Exception("The list is empty"); În acest exemplu, încercăm să obţinem un obiect de tip ArrayList; dacă funcţia getArrayListObject întoarce null, aruncăm o excepţie. Pe exemplul de mai sus putem face următoarele observaţii:  un obiect-excepţie este un obiect ca oricare altul, şi se instanţiază la fel (folosind new)  aruncarea excepţiei se face folosind cuvântul cheie throw  există clasa Exception care desemnează comportamentul specific pentru excepţii. În realitate, clasa Exception este părintele majorităţii claselor excepţie din Java. Enumerăm câteva excepţii standard:  IndexOutOfBoundsException: este aruncată când un index asociat unei liste sau unui vector depăşeşte dimensiunea colecţiei respective.  NullPointerException: este aruncată când se accesează un obiect neinstanţiat (null).  NoSuchElementException: este aruncată când se apelează next pe un Iterator care nu mai conţine un element următor. În momentul în care se instanţiază un obiect-excepţie, în acesta se reţine întregul lanţ de apeluri de funcţii prin care s-a ajuns la instrucţiunea curentă. Această succesiune se numeşte stack trace şi se poate afişa prin apelul e.printStackTrace(), unde e este obiectul excepţie. Prinderea excepţiilor.[4] Când o excepţie a fost aruncată, runtime system încearcă să o trateze (prindă). Tratarea unei excepţii este făcută de o porţiune de cod specială.  Cum definim o astfel de porţiune de cod specială?  Cum specificăm faptul că o porţiune de cod specială tratează o anumită excepţie? Să observăm următorul exemplu: public void f() throws Exception { List l = null; if (null == l) throw new Exception(); }