Java Exceptii
- Detalii
- Categorie: Programare Java
- Accesări: 8,250
Pentru tratarea erorilor remediabile Java foloseste Exceptiile.
Exemple de Exceptii pot fi :
- ArrayIndexOutOfBoundsException
- EOFException
- FileNotFoundException
- InterruptedException, etc
Ierarhia claselor de excepții
Exceptiile pot fi tratate în Java în mai multe moduri :
- pot fi ignorate ;
- pot fi tratate direct în codul în care apar;
- pot fi transmise codului ce a apelat metoda care a generat exceptia, în ideea ca vor fi tratate de acesta.
De obicei se recomanda tratarea erorilor în cadrul programului.
Exceptiile sunt tratate ca obiecte.
Codul de tratare a Exceptiilor se afla în pachetul java.lang, mai exact în clasa java.lang.Exception.
Exceptiile sunt tratate cu ajutorul a trei tipuri de instructiuni : try, catch si finally. Acestea sunt folosite în construc]ii de forma:
try {
instructiuni care pot genera o exceptie
} catch (ExceptionType1 e) {
prelucrarea exceptiei de tipul 1
} catch (ExceptionType2 e) {
prelucrarea exceptiei de tipul 2
} finally {
prelucrarea tuturor celorlalte tipuri de exceptii
}
Exemplu de folosire a instructiunilor try - catch
public class ExExceptie { public static void main (String args[]) { int[] myArray = new int[10]; try { System.out.println("Inainte de o atribuire valida in matrice..."); myArray[0] = 100; System.out.println("Inainte de o atribuire invalida in matrice..."); myArray[100] = 100; System.out.println("Dupa o exceptie in matrice"); } catch (ArrayIndexOutOfBoundsException e) { System.out.println("Eroare de indice in matrice!"); } } }
Exemplu de folosire a instructiunii finally
class FinallyDemo { String name; int nol,no2; FinallyDemo(String args[]){ try { name = new String ("Aptech Limited"); nol = Integer.valueOf(args[0]); no2 = Integer.valueOf(args[1] ) ; System.out.println(name); System.out.println("Division Result is" + nol/no2); } catch(ArithmeticException i){ System.out.println( "Cannot Divide by zero" ); } finally { name = null; // clean up code System.out.println( "Finally executed" ); } } public static void main(String args []){ new FinallyDemo(args); } }
Instructiunea throw determina generarea unei Exceptii de catre codul propriu-zis, ramanand în sarcina procedurii apelante sa trateze exceptia. Tipul exceptiei poate fi predefinit (existent în clasa java.lang.Exception) sau poate fi un tip definit special pentru o anume aplicatie. Sintaxa instructiunii este :
throw (Obiect_Exceptie)
Exemplu:
import java.net.*; public class MyMain { public static void main(String args[]){ MalformedURLException e; e = new MalformedURLException("Adresa URL incorecta!"); throw (e); } }
Personalizarea Exceptiilor existente cât si crearea de noi Exceptii se realizeaza prin extinderea clasei java.lang.Exception
Exemplu:
public class MyOutOfRangeException extends Exception { public MyOutOfRangeException () { super(); } public MyOutOfRangeException (String s) { super(s); } } public class VerifyRange { MyOutOfRangeException e; public void verifyIntRange(int value, int low,int high) throws MyOutOfRangeException { if ((value < low) || (value > high)) { e = new MyOutOfRangeException("number " + value + " out of range"); throw(e); } } }
Obs: sectiunea throw din declaratia functiei obliga orice rutina care apeleaza metoda VerifyRange sa contina o procedura de tratare a exceptiei MyOutOfRangeException.