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