Pentru tratarea erorilor remediabile Java foloseste Exceptiile.

Exemple de Exceptii pot fi :

  • ArrayIndexOutOfBoundsException
  • EOFException
  • FileNotFoundException
  • InterruptedException, etc

Ierarhia claselor de exceptii

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.

Back to Top