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

Exceptiile, obiectele de tip Exception, sunt exceptiile standard (soft) care trebuie tratate de catre programele Java. Dupa cum am mai zis tratarea acestor excepții nu este o optiune ci o constrângere. Exceptiile care pot ”scapa” netratate descind din subclasa RuntimeException și se numesc exceptii la executie. Metodele care sunt apelate uzual pentru un obiect excepție sunt definite în clasa Throwable și sunt publice, astfel încat pot fi apelate pentru orice tip de exceptie. Cele mai uzuale sunt: • getMessage - afiseaza detaliul unei exceptii; • printStackTrace - afiseaza informatii complete despre exceptie și localizarea ei; • toString - metoda mostenit a din clasa Object, care furnizeaza reprezentarea ca sir de caractere a exceptiei. .[2] Din Java 7 se pot prinde mai multe excepţii în acelaşi catch. [4] Sintaxa este: try { ...} catch(IOException | FileNotFoundException ex) { ... } Din Java 7, a fost adăugată construcția try-with-resources, care ne permite să declarăm resursele într-un bloc de try, cu asigurarea că resursele vor fi închise după executarea acelui bloc. Resursele declarate trebuie să implementeze interfața AutoCloseable. try (PrintWriter writer = new PrintWriter(file)) { writer.println("Hello World"); } TRATAREA EXCEPŢIILOR Exceptii la executie [2] In general, tratarea excepțiilor este obligatorie în Java. De la acest principu se sustrag însă așa numitele excepții la execuție sau, cu alte cuvinte, excepțiile care provin strict din vina programatorului și nu generate de o anumită situație externă, cum ar fi lipsa unui fișier. Aceste excepții au o superclasă comună RuntimeException și în acesata categorie sunt incluse excepțiile provocate de:  operații aritmetice ilegale (ımpartirea ıntregilor la zero); ArithmeticException  accesarea membrilor unui obiect ce are valoarea null; NullPointerException  accesarea eronata a elementelor unui vector. ArrayIndexOutOfBoundsException Exceptiile la executie pot aparea oriunde în program și pot fi extrem de numeroare iar încercarea de ”prindere” a lor ar fi extrem de anevoioasa. Din acest