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