English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Eccezioni sono problemi che si verificano durante l'esecuzione del programma (errori in esecuzione). Per comprendere il concetto, vediamolo in modo diverso.
Di solito, durante la compilazione del programma, se non viene creato un file .class, è il file eseguibile in Java e viene eseguito ogni volta che si esegue questo.classQuando si esegue un file, dovrebbe eseguire con successo ogni riga del programma senza problemi. Tuttavia, in alcune situazioni speciali, il JVM incontra alcune situazioni ambigue durante l'esecuzione del programma, ovvero non sa cosa fare.
Questi sono alcuni esempi di scenari-
Se la dimensione del vostro array è 10, una riga di codice nel file tenta di accedere all'undicesimo elemento dell'array.
Se cercate di dividere un numero per zero (il risultato è infinito e il JVM non sa come calcolarlo).
Questo stato è chiamato eccezione. Ogni possibile eccezione è rappresentata da una classe predefinita, tutte le quali si possono trovare nel pacchetto java.lang. È anche possibile definire la propria eccezione.
Alcune eccezioni vengono segnalate durante la compilazione e sono chiamate eccezioni di compilazione o eccezioni controllate.
Quando si verifica tale eccezione, è necessario gestirle utilizzando un blocco try-catch o utilizzare la parola chiave throws per rilasciarle (ritardare la gestione).
Quando si verifica un'eccezione, se non viene gestita, il programma si interrompe bruscamente e il codice dopo la riga che ha causato l'eccezione non viene eseguito.
Di solito, la dimensione dell'array è fissa e ogni elemento viene acceduto utilizzando un indice. Ad esempio, abbiamo creato un array di dimensione 7. Quindi, l'espressione valida per accedere agli elementi dell'array sarà a [0] a [6] (lunghezza 1).
Verrà sollevata un'eccezione ogni volta che si utilizza un valore negativo o maggiore o uguale alla dimensione dell'arrayArrayIndexOutOfBoundsException.
Ad esempio, se eseguite il seguente codice, mostrerà gli elementi dell'array e vi chiederà di fornire un indice per selezionare un elemento. Poiché la dimensione dell'array è 7, gli indici validi sono 0 a 6.
import java.util.Arrays; import java.util.Scanner; public class AIOBSample { public static void main(String args[]){ int[] myArray = {1254, 1458, 5687, 1457, 4554, 5445, 7524}; System.out.println("Gli elementi dell'array sono: "); System.out.println(Arrays.toString(myArray)); Scanner sc = new Scanner(System.in); System.out.println("Inserisci l'indice dell'elemento richiesto: "); int element = sc.nextInt(); System.out.println("L'elemento nell'indice fornito è: :: " + myArray[element]); } }
Ma, se osservate il seguente output, abbiamo richiesto l'elemento con l'indice 9, poiché è un indice non valido, il che ha causatoArrayIndexOutOfBoundsExceptione ha interrotto l'esecuzione.
Gli elementi dell'array sono: [897, 56, 78, 90, 12, 123, 75] Inserisci l'indice dell'elemento richiesto: 7 Eccezione nel thread "main" java.lang.ArrayIndexOutOfBoundsException: 7 at AIOBSample.main(AIOBSample.java:12)
Per risolvere questo problema, devi gestire l'eccezione nel blocco try-catch che gestisce il codice responsabile dell'eccezione.
import java.util.Arrays; import java.util.Scanner; public class AIOBSample { public static void main(String args[]){ int[] myArray = {1254, 1458, 5687, 1457, 4554, 5445, 7524}; System.out.println("Gli elementi dell'array sono: "); System.out.println(Arrays.toString(myArray)); try { Scanner sc = new Scanner(System.in); System.out.println("Inserisci l'indice dell'elemento richiesto: "); int element = sc.nextInt(); System.out.println("L'elemento nell'indice fornito è: :: " + myArray[element]); catch(ArrayIndexOutOfBoundsException ex) { System.out.println("Inserisci l'indice valido (da 0 a 6)"); } } }
Risultato di output
Gli elementi dell'array sono: [1254, 1458, 5687, 1457, 4554, 5445, 7524] Inserisci l'indice dell'elemento richiesto: 7 Inserisci l'indice valido (da 0 a 6)