1 / 22

Programare Orientata Obiect

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.

yardley
Download Presentation

Programare Orientata Obiect

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Programare Orientata Obiect Curs8 Exceptii Curs 8

  2. 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

  3. Curs 8 • Exceptii (I) 1.1 Introducere 1.2 Erorisimanagementulerorilor 1.3Exceptii 1.4 Tipuri de exceptii 1.5 Mecanismultry/catch/finally 1.6 Exemple Curs 8

  4. C8. Exceptii • 1.1. Introducere • Utilizatorii de aplicatii se asteapta ca acesteasafunctionezefaraprobleme. • Aplicatiilesuntfolositeuneori in moduri care nu au fost anticipate de dezvoltatori • Datoritaproblemelor de design sauerorilor de programare, aplicatiile pot sa “crape” in timpulexecutiei • Este responsabilitateaprogramatorilorsadezvolteaplicatii care sa nu isiintrerupaexecutia in mod neasteptat (!) • Solutia? Managementulerorilorprinfolosireaexceptiilor

  5. C8. Exceptii • 1.2. Erorisimanagamentulerorilor • O eroarereprezinta un rezultatneasteptatobtinut in urmaexecutieiunui program • Erorilenetrate (unhandeld) pot avea ca rezultat un comportamentneasteptat din parteaaplicatieisauchiarintrerupereaexecutiei • Eroriletrebuietratate de catreprogramatorastfelincatelesa nu ajunga la utilizator

  6. C8. Exceptii • 1.2. Erorisimanagamentulerorilor • Cauzeposibile ale erorilor: • Managementulmemoriei (alocareincorecta, folosirea de pointerinuli) • Sistemul de fisiere (spatiuinsuficient, drepturi de scriere/citire) • Retea (nu existaconexiune, URL nu exista) • Erori de calcul (impartirea cu zero)

  7. C8. Exceptii • 1.2. Erorisimanagamentulerorilor • Celemai des intalniteerori: • Erori de accesare a vectorilor (accesareaelementului de pepozitia -1) • Erori de conversie (transformareaunui string intr-o valoarenumerica) • ?

  8. C8. Exceptii • 1.2. Erorisimanagamentulerorilor • Abordareaclasica de tratare a erorilor: • Fiecaremetodaintoarce o valoare (indicator) care aratadaca s-a executat cu successau nu (in acestcaz se returneaza un cod de eroare)Dezavantaj: Programatorultrebuiesa is aminteascasaverificeceeacereturneazametodelesisaactioneze in consecinta.Se foloseste in limbajeprocedurale cum arfilimbajul C

  9. C8. Exceptii • 1.2. Erorisimanagamentulerorilor • Abordareaclasica de tratare a erorilor: • Tratareaerorilor se face printr-un mecanism global si se foloseste un mecanism de “jump” pentru a apela o functieatuncicandapare o eroareDezavantaj: Folosireaintructiunii de “jump” (GoTo) esteconsiderata o practica “nesanatoasa” siestedescurajata.Se foloseste in limbaje cum arfi C, FORTRAN, dar se poateadaptasi in C++ si Java

  10. C8. Exceptii • 1.2. Erorisimanagamentulerorilor • O metodamaibuna: exceptiile • Exceptiilepreiaupartilebune de la abordarileclasice • Actioneaza in mod similar cu metodele care intorccoduri de eroare. Oricemetodapoate “arunca” o exceptiedacaapare o eroare • Sunt un mecanism global de management de tratare a erorilor, mecanismimplementat la nivelulmasiniivirtuale

  11. C8. Exceptii • 1.3. Exceptii • Cesuntexceptiile? • O exceptieeste o reprezentare a uneierorisauuneisituatiineasteptate • Exceptiilesuntimplementate in limbajul Java sisuntdisponibile in toateniveleleuneiaplicatii Java • Exceptiileizoleazasiidentificacodul in care apareeroare

  12. C8. Exceptii • 1.3. Exceptii • Cesuntexceptiile? • Atuncicand o eroareapare in timpulexecutieunui program, masinavirtuala Java creaza un obiect de tip exceptie care contineinformatiireferitoare la eroare (tipulerorii, metodasiclasaunde a aparut, stiva de apeluri, etc.) • Obiectulrezultateste “aruncat” in program pentru a fitratat (“tratareaexceptiilor”). • Important! O exceptieesteun obiect care descriere o eroare.

  13. C8. Exceptii • 1.3. Exceptii • Existaclase care descriutoateerorilorcomunesi care sunt derivate din clasagenericaException (http://docs.oracle.com/javase/7/docs/api/ - Exception) • Tipuri de exceptii: • Checked – exceptii care nu sunt “fatale” pentruexecutiaprogramuluisi pot fitratate (“array index out of bounds”, “file not found”, “number format exception”) • Unchecked – exceptii “fatale” (“null pointer”)

  14. C8. Exceptii • 1.3. Exceptii • Tratareaexceptiilor • Se face cu ajutorulintructiunilortry/catch/finallysauprinfolosindclauzathrows in declareametodei • Pentruoricesuccesiune de instructiuni care “arunca” o exceptiecheckedprogramatorultrebuiesadecidadacatrateazaexceptia local (in metoda) folosindtry/catch/finallysaupropagaexceptia la nivelulurmator (in metodasauclasaapelanta) folosindthrows

  15. C8. Exceptii • 1.4. Mecanismultry/catch/finally • Atuncicand o succesiune de instructiuni pot saprovoace o eroare, acestea se plaseaza in interiorulunui bloc try • Dupablocultry, instructiunile care trateazacazul in care apareeroarea se plaseazaintr-un bloc catch • Bloculfinally contineinstructiuni care se executasidacaapare o eroare in timpulexecutieisidaca nu

  16. C8. Exceptii • 1.4. Mecanismultry/catch/finally • try { //instructiuni care se incearca a fiexecutate}catch(Exception e) { • //instructiuni care se executadacaapare o eroare} • finally //optional • { • //instructiuni care se executaintotdeauna • }

  17. C8. Exceptii • 1.5. Exemple • public class Exemplu { • public static voidmain(Stringargs[]) • { • int v[] = newint[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 :10 • at Exceptii.main (Exceptii.java:4)

  18. C8. Exceptii • 1.5. Exemple • public class Exemplu { • public static voidmain(Stringargs[]) • { • try • { • int v[] = newint[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 tratareaerorilor. Exceptiaaruuncata din blocultryvafiprinsa in catchsitrata. Dupatratareaexceptieiprogramulisivaincheiaexecutia in mod normal.

  19. C8. Exceptii • 1.5. Exemple • public class Exemplu { • public static voidmain(Stringargs[]) • { • try • { • int v[] = newint[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!”); • } • } • } • Pentrutratareamaiprecisa a exceptiei se poatefolosi in catch o clasamaispecificadecatclasaException.

  20. C8. Exceptii • 1.5. Exemple • public class Exemplu { • public static voidmain(Stringargs[]) • { • try • { • int v[] = newint[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 posibilsaavemmaimulteinstructiunicatch pentru a puteatratamaimulteexeceptiice pot rezulta din aceeasibucata de cod.

  21. C8. Exceptii • 1.5. Exemple • public class Exemplu { • public static voidmain(Stringargs[]) • { • try • { • int v[] = newint[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 executaintotdeauna!”); • } • } • }

  22. Continutul cursului • Introducere • Platforma Java, Clase si Obiecte • Modificatori, Constructori • Pachete. Incapsularea datelor • Mostenirea / Extinderea claselor • Conversii de date. Clase abstracte • Interfete • Exceptii (I) • Exceptii (II) • Fire de executie Curs 8

More Related