+ All Categories
Home > Documents > Programare Orientata Obiect

Programare Orientata Obiect

Date post: 14-Jan-2016
Category:
Upload: yardley
View: 80 times
Download: 1 times
Share this document with a friend
Description:
Programare Orientata Obiect. Curs 8 Exceptii. Continutul cursului. Introducere Platforma Java, Clase si Obiecte Modificatori, Constructori Pachete. Incapsularea datelor Mostenirea / Extinderea claselor Conversii de date. Clase si metode abstracte Interfete Exceptii (I). Curs 8. - PowerPoint PPT Presentation
22
06/09/22 Curs 8 1 Programare Orientata Obiect Curs 8 Exceptii
Transcript
Page 1: Programare Orientata Obiect

04/21/23 Curs 8 1

Programare Orientata Obiect

Curs 8Exceptii

Page 2: Programare Orientata Obiect

04/21/23 Curs 8 2

Continutul cursului1. Introducere2. Platforma Java, Clase si Obiecte3. Modificatori, Constructori4. Pachete. Incapsularea datelor5. Mostenirea / Extinderea claselor6. Conversii de date. Clase si metode abstracte7. Interfete8. Exceptii (I)

Page 3: Programare Orientata Obiect

04/21/23 Curs 8 3

Curs 8

1. Exceptii (I)1.1 Introducere1.2 Erori si managementul erorilor1.3 Exceptii1.4 Tipuri de exceptii1.5 Mecanismul try/catch/finally1.6 Exemple

Page 4: Programare Orientata Obiect

C8. Exceptii1.1. Introducere

– Utilizatorii de aplicatii se asteapta ca acestea sa functioneze fara probleme.

– Aplicatiile sunt folosite uneori in moduri care nu au fost anticipate de dezvoltatori

– Datorita problemelor de design sau erorilor de programare, aplicatiile pot sa “crape” in timpul executiei

– Este responsabilitatea programatorilor sa dezvolte aplicatii care sa nu isi intrerupa executia in mod neasteptat (!)

– Solutia? Managementul erorilor prin folosirea exceptiilor

Page 5: Programare Orientata Obiect

C8. Exceptii1.2. Erori si managamentul erorilor

– O eroare reprezinta un rezultat neasteptat obtinut in urma executiei unui program

– Erorile netrate (unhandeld) pot avea ca rezultat un comportament neasteptat din partea aplicatiei sau chiar intreruperea executiei

– Erorile trebuie tratate de catre programator astfel incat ele sa nu ajunga la utilizator

Page 6: Programare Orientata Obiect

C8. Exceptii1.2. Erori si managamentul erorilor

– Cauze posibile ale erorilor:– Managementul memoriei (alocare incorecta,

folosirea de pointeri nuli)– Sistemul de fisiere (spatiu insuficient, drepturi

de scriere/citire)– Retea (nu exista conexiune, URL nu exista)– Erori de calcul (impartirea cu zero)

Page 7: Programare Orientata Obiect

C8. Exceptii1.2. Erori si managamentul erorilor

– Cele mai des intalnite erori:– Erori de accesare a vectorilor (accesarea

elementului de pe pozitia -1)– Erori de conversie (transformarea unui string

intr-o valoare numerica)– ?

Page 8: Programare Orientata Obiect

C8. Exceptii1.2. Erori si managamentul erorilor

– Abordarea clasica de tratare a erorilor:1. Fiecare metoda intoarce o valoare (indicator)

care arata daca s-a executat cu succes sau nu (in acest caz se returneaza un cod de eroare)

Dezavantaj: Programatorul trebuie sa is aminteasca sa verifice ceea ce returneaza metodele si sa actioneze in consecinta.

Se foloseste in limbaje procedurale cum ar fi limbajul C

Page 9: Programare Orientata Obiect

C8. Exceptii1.2. Erori si managamentul erorilor

– Abordarea clasica de tratare a erorilor:2. Tratarea erorilor se face printr-un mecanism

global si se foloseste un mecanism de “jump” pentru a apela o functie atunci cand apare o eroare

Dezavantaj: Folosirea intructiunii de “jump” (GoTo) este considerata o practica “nesanatoasa” si este descurajata.

Se foloseste in limbaje cum ar fi C, FORTRAN, dar se poate adapta si in C++ si Java

Page 10: Programare Orientata Obiect

C8. Exceptii1.2. Erori si managamentul erorilor

– O metoda mai buna: exceptiile– Exceptiile preiau partile bune de la abordarile

clasice– Actioneaza in mod similar cu metodele care

intorc coduri de eroare. Orice metoda poate “arunca” o exceptie daca apare o eroare

– Sunt un mecanism global de management de tratare a erorilor, mecanism implementat la nivelul masinii virtuale

Page 11: Programare Orientata Obiect

C8. Exceptii1.3. Exceptii

– Ce sunt exceptiile?– O exceptie este o reprezentare a unei erori

sau unei situatii neasteptate– Exceptiile sunt implementate in limbajul Java

si sunt disponibile in toate nivelele unei aplicatii Java

– Exceptiile izoleaza si identifica codul in care apare eroare

Page 12: Programare Orientata Obiect

C8. Exceptii1.3. Exceptii

– Ce sunt exceptiile?– Atunci cand o eroare apare in timpul executie

unui program, masina virtuala Java creaza un obiect de tip exceptie care contine informatii referitoare la eroare (tipul erorii, metoda si clasa unde a aparut, stiva de apeluri, etc.)

– Obiectul rezultat este “aruncat” in program pentru a fi tratat (“tratarea exceptiilor”).

– Important! O exceptie este un obiect care descriere o eroare.

Page 13: Programare Orientata Obiect

C8. Exceptii1.3. Exceptii

– Exista clase care descriu toate erorilor comune si care sunt derivate din clasa generica Exception (http://docs.oracle.com/javase/7/docs/api/ - Exception)

– Tipuri de exceptii:– Checked – exceptii care nu sunt “fatale”

pentru executia programului si pot fi tratate (“array index out of bounds”, “file not found”, “number format exception”)

– Unchecked – exceptii “fatale” (“null pointer”)

Page 14: Programare Orientata Obiect

C8. Exceptii1.3. Exceptii

– Tratarea exceptiilor– Se face cu ajutorul intructiunilor

try/catch/finally sau prin folosind clauza throws in declarea metodei

– Pentru orice succesiune de instructiuni care “arunca” o exceptie checked programatorul trebuie sa decida daca trateaza exceptia local (in metoda) folosind try/catch/finally sau propaga exceptia la nivelul urmator (in metoda sau clasa apelanta) folosind throws

Page 15: Programare Orientata Obiect

C8. Exceptii1.4. Mecanismul try/catch/finally

– Atunci cand o succesiune de instructiuni pot sa provoace o eroare, acestea se plaseaza in interiorul unui bloc try

– Dupa blocul try, instructiunile care trateaza cazul in care apare eroarea se plaseaza intr-un bloc catch

– Blocul finally contine instructiuni care se executa si daca apare o eroare in timpul executiei si daca nu

Page 16: Programare Orientata Obiect

C8. Exceptii1.4. Mecanismul try/catch/finally

try {//instructiuni care se incearca a fi executate

}catch(Exception e) {

//instructiuni care se executa daca apare o eroare}finally //optional{

//instructiuni care se executa intotdeauna}

Page 17: Programare Orientata Obiect

C8. Exceptii1.5. Exemple

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 afisa un mesaj de eroare de genul:

 Exception in thread "main"java.lang.ArrayIndexOutOfBoundsException :10at Exceptii.main (Exceptii.java:4)

Page 18: Programare Orientata Obiect

C8. Exceptii1.5. Exemple

public class Exemplu { public static void main(String args[]) {

try{

int v[] = new int[10];v[10] = 0; //Exceptie !System.out.println("Aici nu se mai

ajunge...");}catch (Exception ex){System.out.println(“A aparut o eroare!”);}

}}

Se face tratarea erorilor. Exceptia aruuncata din blocul try va fi prinsa in catch si trata. Dupa tratarea exceptiei programul isi va incheia executia in mod normal.

Page 19: Programare Orientata Obiect

C8. Exceptii1.5. Exemple

public class Exemplu { public static void main(String args[]) {

try{

int v[] = new int[10];v[10] = 0; //Exceptie !System.out.println("Aici nu se mai

ajunge...");}catch (ArrayIndexOutOfBoundsException ex){System.out.println(“A aparut o eroare de tip

ArrayIndexOutOfBounds!”);}

}}

Pentru tratarea mai precisa a exceptiei se poate folosi in catch o clasa mai specifica decat clasa Exception.

Page 20: Programare Orientata Obiect

C8. Exceptii1.5. Exemple

public class Exemplu { public static void main(String args[]) {

try{

int v[] = new int[10];v[10] = 0; //Exceptie !System.out.println("Aici nu se mai

ajunge...");}catch (ArrayIndexOutOfBoundsException ex){System.out.println(“A aparut o eroare!”);}catch (Exception ex){System.out.println(“A aparut o eroare!”);}

}}E posibil sa avem mai multe instructiuni catch pentru a putea trata mai multe execeptii ce pot rezulta din aceeasi bucata de cod.

Page 21: Programare Orientata Obiect

C8. Exceptii1.5. Exemple

public class Exemplu { public static void main(String args[]) {

try{

int v[] = new int[10];v[10] = 0; //Exceptie !System.out.println("Aici nu se mai ajunge...");

}catch (ArrayIndexOutOfBoundsException ex){System.out.println(“A aparut o eroare de tip

ArrayIndex…!”);}catch (Exception ex){System.out.println(“A aparut o eroare!”);}finally{ System.out.println(“Se executa intotdeauna!”);}

}}

Page 22: Programare Orientata Obiect

04/21/23 Curs 8 22

Continutul cursului1. Introducere2. Platforma Java, Clase si Obiecte3. Modificatori, Constructori4. Pachete. Incapsularea datelor5. Mostenirea / Extinderea claselor6. Conversii de date. Clase abstracte7. Interfete8. Exceptii (I)9. Exceptii (II)10. Fire de executie


Recommended