Categories: Java

La Gestione delle Eccezioni in Java

Durante la scrittura di un programma proviamo più volte a compilarlo e poi eseguirlo, cercando di perfezionarlo per non incorrere in brutte figure. Quando tutto ci sembra funzionare a dovere, qualcuno inserisce un valore anomalo e la JVM ci lancia un messaggio poco confortevole: “Arithmetic Exception” perché abbiamo cercato di dividere un numero per zero.
Con il termine eccezione si indica un evento che si manifesta in seguito al verificarsi di un errore. Lo scopo dello scatenarsi dell’eccezione è per non far terminare in modo anomalo il programma ed inoltre permette di essere intercettata e mostrare un messaggio personalizzato. Vediamo un esempio:

// file Main.java

package corso;

public class Main
{
    public static int Divisione(int a, int b)
    {
       return a / b;
    }

    public static void main(String[] args)
    {
       System.out.println("La divisione di 50 con 0 è " +
              Divisione(50, 0));
    }
}

Se provate ad eseguire il programma verrà lanciata un’eccezione gestita dalla macchina virtuale Java che vi avverte della divisione per zero. Possiamo superare il problema inserendo una nostra gestione dell’errore, intercettandolo quando avviene prima di essere passato alla JVM. Vediamo la sintassi:

// file Main.java

package corso;

public class Main
{
    public static int Divisione(int a, int b)
    {
       try
       {
         a /= b;
       }
       catch(ArithmeticException e)
       {
         a = 0;
       }

       return a;
   }

   public static void main(String[] args)
   {
        System.out.println("La divisione di 50 con 0 è " +
             Divisione(50, 0));
   }
}

Con il try proviamo a fare un’operazione, mentre con il catch gestiamo la possibile eccezione che viene lanciata, quindi una divisione per zero per noi dà sempre come risultato zero. Vediamo un altro esempio:

// file Main.java

package corso;

public class Main
{
   public static int Fattoriale(int a)
   {
      if (a <= 1)
        System.out.println("Inserire un valore
              maggiore di " + a + "\n");

      int iTot = 1;
      try
      {
          for (int i = a; i > 1; i--)
             iTot *= i;
      }
      catch(Exception e)
      {
          iTot = 0;
      }
      finally
      {
          if (iTot == 0)
             System.out.println("Inserire
                un numero minore di " + a + "\n");
      }

      return iTot;
    }

    public static void main(String[] args)
    {
 System.out.println("Il fattoriale di 50 è " +
            Fattoriale(50));
    }
}

In questo esempio ho inserito la parola chiave finally che delinea una parte di codice che viene sempre eseguita. In lezioni future impareremo a creare nostre eccezioni personalizzate, basta creare una classe derivata da Exception, che ancora non sappiamo fare e quindi studieremo questo argomento dopo che abbiamo imparato a capire cosa sono le classi derivate.

<< Lezione Precedente – Inizio CorsoLezione Successiva >>

Share
Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.

Published by
Giampaolo Rossi

Recent Posts

Un Abbonamento per Tutti i Software

Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…

10 mesi ago

Software di Magazzino Gratuito

MerciGest è un software per la gestione del magazzino completamente gratuito. Continua a leggere→

11 mesi ago

Mettere il PC in Lock Screen

In ufficio può capitare di doversi allontanare dal proprio posto di lavoro, ecco che allora…

3 anni ago

Fare il reset togliendo la corrente

In questo articolo vedremo quando è più o meno utile togliere la corrente ad un…

3 anni ago

Prossimi Aggiornamenti Software

Dopo la pausa invernale dovuta al lavoro che devo fare per sostentarmi, eccomi di nuovo…

3 anni ago

Come Eliminare i Files in Windows

Vediamo come eliminare i files direttamente da Windows senza utilizzare il cestino. Continua a leggere→

3 anni ago