La gestione delle eccezioni in java – 1

La creazione di programmi classi in Java,, deve prevedere la gestione degli eventuali errori che possono sorgere durante l’esecuzione del programma.
Alcuni di questi errori sono irrecuperabili come quelli derivanti da errori nell’esecuzione della Java Virtual Machine che esegue i programmi, altri sono invece recuperabili e devono essere gestiti dal programmatore.
Per fare questo Java mette a disposizione la classe Exception che è sotto classe di Throwable e la classe Error che è anch’essa sotto classe di Thtowable.
La classe Throwable la quale classe permette anche di sollevare eccezioni definite dall’utente.
Ad esempio se è richiesto l’inserimento dell’età e l’utente inserisce un valore minore di zero, anche se il valore zero o negativo è ammesso come valore numerico, non lo è ai fini del problema.
In questo caso è possibile sollevare un’eccezione che gestita comunica all’utente l’errore.
La classe Error gestisce gli errori della Jvm non recuperabili, mentra la classe Exception a sua vola possiede tre sotto classi: la classe IOException (errori nella gestione dell’input/output come ad esempio un errore di lettura di dati da un file, la classe InterruptedException legate ad un’interruzione nell’esecuzione di un thread (programmazione concorrente) o RuntimeException che sono generate quando un’eccezione è sollevata da un errore nell’esecuzione del programma, come ad esempio l’inserimento di un input non conforme al tipo di dati, un indie di un array fuori range, ecc.
La gerarchia delle classi per le eccezioni è rappresentata da questo schema sotto riportato.

Gerarchia delle classi per le eccezioni

La gerarchia delle classi è molto articolata nei prossimi articoli sarà fatta disamina delle varie classi di eccezione. Ad esempio nelle IOException l’eccezione FileNotFoundException è un’eccezione che viene sollevata quando il file da aprire in lettura o scrittura non è trovato nel percorso assegnato.
La gestione delle eccezioni prevede le istruzioni: try .. catch .. finally.
La try prevede il blocco di istruzioni da eseguire che può generare un’eccezione, la catch almeno una deve essere presente deve rispondere all’eccezione eventualmente generata nel blocco try, il blocco finally opzionale sono azioni che possono essere eseguite sempre ovvero l’eccezione è generata o non generata le istruzioni del blocco finally sono sempre eseguite.
Il codice può essere:
try
{ istruzioni;}
catch (Exception identificatore)
{ istruzioni;}
finally
{ istruzioni;}
E’ utilizzata la classe Exception quando in modo generico deve essere gestita l’eccezione a prescindere dalla particolare eccezione. La superclasse Exception comprende tutte le sotto classi di eccezioni che gestisce.
Il blocco catch può essere ripetuto più volte per gestire più eccezioni di tipo differente e eseguire azioni differenti.
Una semplice classe che esegue il rapporto fra due numeri e stampa il risultato è questa:


package com.mycompany.progettodivisione;
import java.util.Scanner;
public class ProgettoDivisione {
    private int a;
    private int b;
    private float  r;
    public ProgettoDivisione(int _x, int _y)
    {
        this.a=_x;
        this.b=_y;
    }
    public float Rapporto()
    {
        r=(float)a/(float)b;
        return r;
    }
    public static void main(String[] args) {
        int x=0;
        int y=0;
        int f=0;
        Scanner sc = new Scanner(System.in);
        try
        {
            System.out.print("Inserisci due numeri:");
            x=sc.nextInt();
            y=sc.nextInt();
            f=1;
        }
        catch (Exception e)
        {
            System.out.println("Errore nei dati");
        }
        if (f==1)
        {
            ProgettoDivisione pd = new ProgettoDivisione(x,y);
            float z= pd.Rapporto();
            System.out.println("Il risultato:"+z);
        }
    }
}

La classe Java ha tre attributi due interi e uno reale, il metodo “Rapporto” calcola la divisione fra i due numeri (convertiti in reali) e ritorna il risultato.
Il metodo main prevede la gestione dell’eccezione nel caso in cui l’inserimento dati nel blocco try non abbia esito favorevole (ad esempio l’utente digita dei caratteri o un numero in formato non valido), in questo caso è sollevata l’eccezione e nel blocco catch è stampato il messaggio di errore.
Nel main è utilizzata la variabile f per determinare se l’input è stato inserito correttamente (in questo caso f vale 1) o rimane zero e quindi (errore di input).

Video dell’articolo

Ti consiglio un libero per imparare Java