how handle arrayindexoutofboundsexception java
Questo tutorial fornisce una spiegazione dettagliata su un'importante eccezione generata da array Java, ad esempio ArrayIndexOutOfBoundsException con semplici esempi:
Abbiamo imparato tutto sugli array nei nostri tutorial precedenti. Gli array sono di natura statica e la loro dimensione o dimensione è determinata al momento della loro dichiarazione. Sappiamo anche che questa dimensione o il numero di elementi dichiarati per l'array sono fissi e sono numerati da 0.
A volte, la logica del programma è tale che il programma tenta di accedere all'elemento da un indice inesistente. Per esempio, a causa di anomalie in un programma, un programma potrebbe tentare di accedere a 11thelemento nella matrice di 10 elementi. Ciò si traduce in una condizione anormale.
=> Dai un'occhiata al corso completo di Java per principianti
Java fornisce un'eccezione nel pacchetto 'java.lang' che viene lanciata quando si accede a un indice di array non esistente. Questo è noto come 'ArrayIndexOutOfBoundsException'.
Cosa imparerai:
Indice della Matrice Fuori Dai Limiti d'Eccezione
Come già affermato, quando si tenta di accedere a elementi dell'array oltre una lunghezza specificata o un indice negativo, il compilatore lancia 'ArrayIndexOutOfBoundsException'.
ArrayIndexOutOfBoundsException implementa un'interfaccia 'serializzabile' e deriva da 'indexOutOfBoundsException', che a sua volta deriva dalla classe RuntimeException che è una sottoclasse della classe 'eccezione'. Tutte queste classi appartengono al pacchetto 'java.lang'.
ArrayIndexOutOfBoundsException è un'eccezione runtime non controllata e quindi non è necessario che venga chiamata esplicitamente da un metodo. Di seguito è riportato il diagramma delle classi di ArrayIndexOutOfBoundsException che mostra la gerarchia di ereditarietà nonché i costruttori per questa eccezione.
Diagramma di classe di ArrayIndexOutOfBoundsException
Come spiegato in precedenza, la classe ArrayIndexOutOfBoundsException ha tre superclassi, ovvero java.lang.exception, java.lang. runtimeException e java.lang.indexOutOfBoundsException.
Successivamente, vedremo alcuni esempi di ArrayIndexOutOfBoundsException in java.
Esempio di eccezione ArrayIndexOutOfBounds
Vediamo il primo esempio che mostra l'eccezione ArrayIndexOutOfBounds generata.
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; //for loop iterates from 0 to 5 (length of array) for(int i=0;i<=subjects.length;i++) { //when ‘i’ reaches 5, it becomes invalid index and exception will be thrown System.out.print(subjects(i) + ' '); } }
Produzione:
Nel programma sopra, abbiamo soggetti array costituiti da 5 elementi. Tuttavia, nel ciclo for, abbiamo impostato la condizione di iterazione come i<=subjects.length. Thus for the last iteration, the value of i is 5 which exceeds the array size. Hence, when printing array elements, the iteration i=5, results in ArrayIndexOutOfBoundsException being thrown.
Di seguito è riportato un altro esempio di accesso all'indice negativo.
class Main { public static void main(String() args) { //array of integers Integer() intArray = {10,20,30,40,50}; //index = 0; accessing element is successful System.out.println('First element: ' + intArray(0)); //index = -4; accessing fails. Exception thrown System.out.println('Last element: ' + intArray(-4)); }
Produzione:
Nel programma sopra, dichiariamo un array di tipo intero e quindi accediamo agli elementi utilizzando indici individuali. La prima espressione è valida ma nella seconda espressione abbiamo tentato di accedere all'elemento in indice = -4. Quindi la seconda espressione genera ArrayIndexOutOfBoundsException come mostrato nell'output.
Evitare ArrayIndexOutOfBoundsException
La causa comune per il verificarsi di ArrayIndexOutOfBoundsException è che il programmatore commette un errore nell'utilizzo degli indici dell'array.
Pertanto il programmatore può seguire le tecniche seguenti per evitare il verificarsi di ArrayIndexOutOfBoundsException.
Utilizzare gli indici di inizio e fine corretti
Gli array iniziano sempre con l'indice 0 e non con 1. Allo stesso modo, è possibile accedere all'ultimo elemento dell'array utilizzando l'indice 'arraylength-1' e non 'arraylength'. I programmatori dovrebbero fare attenzione durante l'utilizzo dei limiti dell'array e quindi evitare ArrayIndexOutOfBoundsException.
Utilizzo di Enhanced For Loop
Un ciclo for o for-each migliorato esegue l'iterazione su posizioni di memoria contigue come array e accede solo agli indici legali. Quindi, quando si utilizza il ciclo for migliorato, non dobbiamo preoccuparci dell'accesso a indici errati o illegali.
Esempio di iterazione su un array utilizzando Enhanced for Loop.
class Main { public static void main(String() args) { //array of subjects. There are 5 elements. String() subjects = {'Maths','Science','French','Sanskrit', 'English'}; System.out.println('') //define enhanced for loop to iterate over array for(String strval:subjects) { //iterates only through valid indices System.out.print(strval + ' '); } } }
Produzione:
Abbiamo utilizzato un ciclo for migliorato nel programma precedente per iterare sulla matrice di soggetti. Notare che per questo ciclo, non è necessario specificare esplicitamente l'indice. Quindi il ciclo itera sull'array fino al raggiungimento della fine dell'array.
Pertanto è facile correggere l'eccezione ArrayOutOfBoundsException utilizzando gli indici appropriati e prestando attenzione quando si specificano i limiti dell'array. Possiamo anche fare uso del ciclo for migliorato per iterare sugli array.
Passiamo ora a rispondere ad alcune domande frequenti relative alle eccezioni negli array.
Domande frequenti
D # 1) Perché si verifica ArrayIndexOutOfBoundsException?
Risposta: ArrayIndexOutOfBoundsException si verifica quando si tenta di accedere a un indice di matrice inesistente, ovvero. l'indice è negativo o fuori dai limiti con i limiti dell'array.
D # 2) Che cos'è NegativeArraySizeException?
domande di intervista java j2ee per 10 anni di esperienza
Risposta: NegativeArraySizeException è un'eccezione di runtime che viene generata se una matrice è definita con una dimensione negativa.
D # 3) Che cos'è l'eccezione di array fuori limite?
Risposta: Un'eccezione di matrice fuori limite si verifica quando un programma tenta di accedere a un elemento di matrice specificando un indice negativo o un indice che non si trova nell'intervallo dell'array specificato.
D # 4) Possiamo lanciare NullPointerException in Java?
Risposta: Sì, puoi lanciare NullPointerException in Java oppure la JVM lo farà per te.
D # 5) NullPointerException è selezionata o deselezionata?
Risposta: NullPointerException è deselezionata ed estende RuntimeException. Non obbliga il programmatore a utilizzare il blocco catch per gestirlo.
Conclusione
In questo tutorial, abbiamo discusso i dettagli di ArrayIndexOutOfBoundsException in Java. Questa eccezione viene solitamente generata quando in un programma si tenta di accedere agli elementi dell'array utilizzando l'indice negativo o l'indice fuori dai limiti come specificare un indice maggiore della lunghezza dell'array specificata.
Questa eccezione può essere evitata prendendosi cura degli indici mentre si accede agli array o utilizzando un ciclo for migliorato che per progettazione accede solo agli indici legali.
Passeremo ad altri argomenti sugli array nei nostri tutorial successivi.
=> Esplora il corso Java GRATUITO qui.
Lettura consigliata
- Tutorial Java Reflection con esempi
- Tutorial sulla lunghezza di array Java con esempi di codice
- Eccezioni Java e gestione delle eccezioni con esempi
- Tutorial JAVA per principianti: oltre 100 tutorial video Java pratici
- Modificatori di accesso in Java - Tutorial con esempi
- Java Array - Come stampare elementi di un array in Java?
- Introduzione al linguaggio di programmazione Java - Tutorial video
- Tutorial Java SWING: contenitore, componenti e gestione degli eventi