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

 probleme cauzate de accesul concurent la fişier Definirea unui tip de excepţie de către utilizator se justifică de obicei prin: — necesitatea reţinerii de date suplimentare şi/sau mesaje mai detaliate despre excepţie; — necesitatea ca dintr-o clasă mai largă de excepţii să fie captate doar o anumită parte. Exemplu.[2] public class Exemplu { public static void main(String args[]) { int v[] = new int[10]; v[10] = 0; //Exceptie ! System.out.println("Aici nu se mai ajunge..."); } } La rularea programului va fi generata o exceptie, programul se va opri la instructiunea care a cauzat exceptia si se va afișa un mesaj de eroare de genul: "Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException :10 at Exceptii.main (Exceptii.java:4)" .[2] Excepţii în Java.[4] Când o eroare se produce într-o funcţie, aceasta creează un obiect excepţie şi îl pasează către runtime system. Un astfel de obiect conţine informaţii despre situaţia apărută:  tipul de excepţie  stiva de apeluri (stack trace): punctul din program unde a intervenit excepţia, reprezentat sub forma lanţului de metode în care programul se află în acel moment Pasarea menţionată mai sus poartă numele de aruncarea (throwing) unei excepţii. Crearea unui obiect de tip exceptie se numeste aruncarea unei exceptii (”throwing an exception”). In momentul ın care o metoda genereaza (arunca) o exceptie sistemul de executie este responsabil cu gasirea unei secvente de cod dintr-o metoda care sa o trateze. Cautarea se face recursiv, ıncepand cu metoda care a generat excepția și mergând înapoi pe linia apelurilor catre acea metoda. Secventa de cod dintr-o metoda care trateaza o anumita exceptie se numeste analizor de exceptie (”exception handler”) iar interceptarea si tratarea ei se numeste prinderea exceptiei (”catch the exception”). Cu alte cuvinte, la aparitia unei erori este ”aruncata” o exceptie iar cineva trebuie sa o ”prinda” pentru a o trata. Daca sistemul nu gaseste nici un analizor pentru o anumita exceptie, atunci programul Java se opreste cu un mesaj de eroare