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 Corso – Lezione Successiva >>
MerciGest è il software gestionale gratuito per Windows che semplifica la gestione del magazzino: giacenze,…
Tutti i nostri software gestionali possono essere collegati a un database SQL Server, consentendo l’accesso…
MerciGest è semplice e immediato: basta scaricare e installare il programma per iniziare subito. Al…
MerciGest è un gestionale di magazzino per Windows pensato per negozi, piccole imprese e artigiani…
La Standard Template Library (STL) è una delle componenti più potenti del C++. Fornisce una…
Sono arrivato alla convinzione che un abbonamento per tutti i miei software gestionali sia il…