English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Le eccezioni sono problemi che si verificano durante l'esecuzione del programma (errori a runtime). Quando si verifica un'eccezione, il programma si interrompe improvvisamente e il codice dopo la riga dell'eccezione non verrà mai eseguito.
import java.util.Scanner; public class ExceptionExample { public static void main(String args[]) { Scanner sc = new Scanner(System.in); System.out.println("Inserisci il primo numero:"); int a = sc.nextInt(); System.out.println("Inserisci il secondo numero:"); int b = sc.nextInt(); int c = a / b; System.out.println("Il risultato è: " + c); } }
Risultato di output
Inserisci il primo numero: 100 Inserisci il secondo numero: 0 Exception in thread "main" java.lang.ArithmeticException: / by zero at ExceptionExample
In Java ci sono due tipi di eccezioni
Eccezione controllata - Le eccezioni controllate sono le eccezioni che si verificano durante la compilazione. Queste sono anche chiamate eccezioni di compilazione. Queste eccezioni non possono essere ignorate semplicemente durante la compilazione. Gli sviluppatori devono prestare attenzione (gestire) queste eccezioni.
Eccezione non controllata - Le eccezioni non controllate sono le eccezioni che si verificano durante l'esecuzione. Queste sono anche chiamate eccezioni a runtime. Includono errori di programmazione, come errori logici o uso improprio dell'API. Le eccezioni a runtime vengono ignorate durante la compilazione.
Il modo di visualizzazione delle eccezioni a runtime/degli eccezioni non controllate è“Eccezione principale del thread”,Ecco, ogni volta che si verifica un'eccezione a runtime, il messaggio inizia con quella riga.
Nel seguente programma Java, abbiamo un array di dimensione 5 e proviamo ad accedere all'elemento numero 6, il che genererà un ArrayIndexOutOfBoundsException.
public class ExceptionExample { public static void main(String[] args) { //Crea un array di interi di dimensione 5 int inpuArray[] = new int[5]; //Riempimento dell'array inpuArray[0] = 41; inpuArray[1] = 98; inpuArray[2] = 43; inpuArray[3] = 26; inpuArray[4] = 79; //L'indice di accesso è maggiore della dimensione dell'array System.out.println(inpuArray[6]); } }
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 6 at MyPackage.ExceptionExample.main(ExceptionExample.java:14)
Nell'esempio seguente, proviamo a creare un array utilizzando un numero negativo come valore di dimensione, il che genererà NegativeArraySizeException.
public class Test { public static void main(String[] args) { int[] intArray = new int[-5]; } }
Durante l'esecuzione, il programma genererà un'eccezione in esecuzione come segue.
Exception in thread "main" java.lang.NegativeArraySizeException at myPackage.Test.main(Test.java:6)
È possibile gestire l'eccezione in esecuzione e evitare la terminazione anomala, ma Java non ha un programma di riparazione specifico per le eccezioni in esecuzione; dipende dall'eccezione e dal tipo di codice da modificare.
Ad esempio, se si deve correggere ArrayIndexOutOfBoundsException nel primo programma elencato, è necessario eliminare o modificare la riga che accede all'indice dell'array al di sopra della sua dimensione.
public class ExceptionExample { public static void main(String[] args) { //Creazione di un array intero con dimensione 5 int inpuArray[] = new int[5]; //Riempimento dell'array inpuArray[0] = 41; inpuArray[1] = 98; inpuArray[2] = 43; inpuArray[3] = 26; inpuArray[4] = 79; //L'indice di accesso è maggiore della dimensione dell'array System.out.println(inpuArray[3]); } }
Risultato di output
26