Migliaia di parole spese intorno a questo argomento, reclutatori che pongono questa domanda ai candidati come fosse un paradigma indispensabile (non per dire che non sia importante !) , eppure tutto ruota intorno ad una parola chiave “throw”, ma cerchiamo di capire meglio.
L’eccezione è un evento indesiderato o imprevisto, che si verifica durante l’esecuzione di un programma, cioè in fase di esecuzione, che interrompe il normale flusso delle istruzioni del programma. In Java, ci sono due tipi di eccezioni:
- Eccezioni verificate
- Eccezioni non controllate
Le eccezioni verificate o controllate in Java ...Leggi di più
sono quelle che vengono controllate in fase di compilazione. Esempi di eccezioni verificate includono IOException, SQLException e FileNotFoundException.
Le eccezioni controllate vengono controllate in fase di compilazione e pertanto il compilatore richiede al programmatore di gestire o dichiarare queste eccezioni. Ciò significa che il programmatore deve includere un blocco try-catch (ma questa è una regola ormai assodata e basilare per un programmatore )o un’istruzione throws per le gestire le eccezioni.
La gestione delle eccezioni, serve quindi ad evitare l’arresto anomalo del programma o produrre risultati imprevisti. Il modo migliore per gestire le eccezioni verificate è utilizzare il blocco try-catch. Ciò consente al programmatore di rilevare l’eccezione e intraprendere l’azione appropriata.
Vediamo un esempio:
public static void main(String[] args) {
try {
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
} catch (Exception e) {
System.out.println("Errore!");
}
}
Cosa abbiamo fatto? Abbiamo dichiarato e creato un array di interi di 3 elementi, ma ne vogliamo stampare 10, chiaro che questo genera un’eccezione, ma la nostra è una eccezione verificata o controllata completamente. Si perchè nell’eccezione controllata, ci sono due tipi: eccezioni completamente controllate e eccezioni parzialmente controllate. Ad esempio lo script in alto poteva essere parzialmente controllata eliminando il try-catch e usando la parola chiave throws:
public static void main(String[] args) throws Exception
{
int[] myNumbers = {1, 2, 3};
System.out.println(myNumbers[10]);
System.out.println("Errore!");
}
Il compilatore Java non avrebbe fatto nessuna obiezione e il nostro programmino sarebbe stato compilato.
Le eccezioni non controllate in Java sono quelle che non vengono controllate in fase di compilazione. Sono anche conosciute come eccezioni di runtime. Le eccezioni non controllate sono il tipo più comune di eccezione in Java e si verificano quando un programma è in esecuzione. Esempi di eccezioni non controllate includono NullPointerException, ArrayIndexOutOfBoundsException e ClassCastException.Quindi eccezioni nelle classi Error e RuntimeException sono eccezioni non controllate, tutto il resto sotto throwable è controllato.
Le eccezioni non controllate non vengono controllate in fase di compilazione e pertanto il compilatore non richiede al programmatore di gestire o dichiarare queste eccezioni.
Ecco un esempio:
public static void main(String args[])
{
int x = 0;
int y = 10;
int z = y / x;
}
Chiaro che una divisione per 0 genera in run-time una eccezione. Queste eccezioni sono in genere causate da errori di programmazione !
In conclusione, le eccezioni non controllate e controllate sono due diversi tipi di eccezioni in Java. Le eccezioni non controllate non vengono controllate in fase di compilazione, mentre le eccezioni controllate vengono controllate in fase di compilazione. È importante gestire entrambi i tipi di eccezioni, poiché possono causare l’arresto anomalo del programma o produrre risultati imprevisti. Il modo migliore per gestire le eccezioni è utilizzare il blocco try-catch.
Se in questo articolo ci sono degli errori o hai dei suggerimenti, faccelo sapere!