Documente Academic
Documente Profesional
Documente Cultură
Taskuri
Exceptii in Java
Exceptiile sunt evenimente speciale, conditii care apar la rulare si necesita oprirea
programului (ex. impatire la 0). Java permite specificarea unor actiuni speciale care vor fi
executate automat la aparitia unor astfel de situatii.
Daca programatorul nu trateaza o anumita exceptie ea va fi tratata automat de catrea
masina virtuala prin oprirea programului si afisarea unui mesaj de eroare pe consola.
Majoritatea exceptiilor sunt derivate din clasa Exception sau RuntimeException, care au ca si
superclasa clasa Trowable.
1
Pentru o portiune de cod se pot intercepta mai multe exceptii diferite, specificand moduri
detratare diferite.
Pentru a trata exceptiile care apar intr-un bloc de cod, acesta va fi inclus intr-o secventa try
… catch:
try {
// intructiuni de supravegheat
} catch (Exceptie1 e1) {
// tratare eroare e1
System.out.println(“A aparut eroarea Exceptie1");
}
catch (Exceptie2 e2) {
// tratare eroare e2
System.out.println(“A aparut eroarea Exceptie2");
}
finally {
// eliberare resurse – se executa neconditionat
}
if (eroare)
throw new TipExceptie( );
2
}
Daca se apeleaza o metoda care trateaza un tip de eroare, ea trebuie inclusa intr-un bloc try … catch
sau metoda curenta trebuie sa declare de asemenea acel tip de eroare. In caz contrar se va semnala
o eroare la compilare.
In Java sunt identificate doua tipuri de erori posibile (clase derivate direct din Trowable):
Error (erori grave) si Exception (exceptii care pot fi tratate).
Exceptiile utilizator sunt derivate de obicei din clasa Exception. Execeptiile care trebuie
tratate la functiile de biblioteca sunt prezentate in documentatia Java API.
• ”throw an exception”
• ”exception handler”
import java.io.*;
String fis="fisier.txt";
FileReader f = null;
try {
// Deschidem fi_ierul
f = new FileReader(fis);
int c;
System.out.print((char)c);
catch (FileNotFoundException e) {
catch (IOException e) {
4
//Tratam alt tip de excep_ie
System.out.println("Eroare la citire!");
e.printStackTrace();
finally {
if (f != null) {
// Închidem fisierul
try {
f.close();
catch (IOException e) {
e.printStackTrace(); }
} // if
} //finally
În acest caz se utilizeaza clauza throws în antetul metodelor care pot genera exceptii:
...
5
Atentie !!!
import java.io.*;
public class Exceptii {
Exemplu:
throw new IOException("Exceptie I/O");
Sau:
if (index >= vector.length)
throw new ArrayIndexOutOfBoundsException();
sau:
6
catch(Exception e) {
System.out.println ("A aparut o exceptie!);
throw e;
}
ArithmeticException
Ιmpartirea la 0 va genera o exceptie doar daca tipul numerelor împartite este aritmetic
întreg.
Ιn cazul tipurilor reale (float si double) nu va fi generata nici o exceptie, ci va fi
furnizat ca rezultat o constanta care poate fi, functie de operatie, Infinity, -Infinity, sau
Nan.
Exemplu :
int a=1 ;
int b=0;
System.out.println(a/b); // Exceptie la executie!
double x=1, y=-1, z=0;
System.out.println(x/z); // Infinity
System.out.println(y/z); // -Infinity
System.out.println(z/z); // NaN
Task 4 : Testati codul de mai sus, observand rezultatele. Precizati cand se genereaza o
exceptie si cand nu.