programare orientata obiect
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 PresentationTRANSCRIPT
![Page 1: Programare Orientata Obiect](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/1.jpg)
04/21/23 Curs 8 1
Programare Orientata Obiect
Curs 8Exceptii
![Page 2: Programare Orientata Obiect](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/2.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/3.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/4.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/5.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/6.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/7.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/8.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/9.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/10.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/11.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/12.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/13.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/14.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/15.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/16.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/17.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/18.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/19.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/20.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/21.jpg)
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](https://reader033.vdocumente.com/reader033/viewer/2022061600/568147b3550346895db4f791/html5/thumbnails/22.jpg)
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