how handle arrayindexoutofboundsexception java
Denne vejledning giver en detaljeret forklaring om en vigtig undtagelse fra Java Arrays, dvs. ArrayIndexOutOfBoundsException med enkle eksempler:
Vi har lært alt om Arrays i vores tidligere tutorials. Arrays er statiske og deres dimension eller størrelse bestemmes på tidspunktet for deres erklæring. Vi ved også, at denne størrelse eller antallet af deklarerede elementer for arrayet er faste og nummereres fra 0.
Nogle gange er programlogikken sådan, at programmet forsøger at få adgang til elementet fra et ikke-eksisterende indeks. For eksempel, på grund af fejl i et program kan et program forsøge at få adgang til 11thelement i matrixen af 10 elementer. Dette resulterer i en unormal tilstand.
=> Tjek den komplette Java-træning for begyndere
Java giver en undtagelse i pakken 'java.lang', der kastes, når der er adgang til et ikke-eksisterende array-indeks. Dette er kendt som “ArrayIndexOutOfBoundsException”.
Hvad du lærer:
bedste gratis software til at downloade youtube videoer
ArrayIndexOutOfBoundsException
Som allerede nævnt, når du prøver at få adgang til arrayelementer ud over en bestemt længde eller et negativt indeks, kaster compileren 'ArrayIndexOutOfBoundsException'.
ArrayIndexOutOfBoundsException implementerer en 'serialiserbar' grænseflade og stammer fra 'indexOutOfBoundsException', der igen er afledt af RuntimeException-klassen, som er en underklasse af klassen 'undtagelse'. Alle disse klasser tilhører pakken ‘java.lang’.
ArrayIndexOutOfBoundsException er en runtime, ikke-markeret undtagelse og behøver derfor ikke eksplicit at blive kaldt fra en metode. Følgende er klassediagrammet over ArrayIndexOutOfBoundsException, der viser arvshierarkiet såvel som konstruktørerne til denne undtagelse.
Klassediagram over matrixIndexOutOfBoundsException
Som forklaret tidligere har ArrayIndexOutOfBoundsException-klassen tre superklasser, dvs. java.lang.exception, java.lang. runtimeException og java.lang.indexOutOfBoundsException.
Dernæst vil vi se nogle eksempler på ArrayIndexOutOfBoundsException i java.
Eksempel på ArrayIndexOutOfBounds undtagelse
Lad os se det første eksempel, der viser, at ArrayIndexOutOfBounds-undtagelsen kastes.
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] + ' '); } }
Produktion:
I ovenstående program har vi matrixemner bestående af 5 elementer. I for-sløjfen har vi imidlertid indstillet iterationsbetingelsen som 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.
Nedenfor er et andet eksempel på adgang til det negative indeks.
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]); }
Produktion:
I ovenstående program erklærer vi en matrix af typen heltal og får derefter adgang til elementerne ved hjælp af individuelle indekser. Det første udtryk er gyldigt, men i det andet udtryk har vi forsøgt at få adgang til elementet ved indeks = -4. Derfor kaster det andet udtryk ArrayIndexOutOfBoundsException som vist i output.
Undgå ArrayIndexOutOfBoundsException
Den almindelige årsag til forekomsten af ArrayIndexOutOfBoundsException er, at programmøren laver en fejl i brugen af matrixindekserne.
Således kan programmøren følge nedenstående teknikker for at undgå forekomsten af ArrayIndexOutOfBoundsException.
Brug korrekt start- og slutindeks
Arrays starter altid med indeks 0 og ikke 1. På samme måde kan man få adgang til det sidste element i arrayet ved hjælp af indekset 'arraylength-1' og ikke 'arraylength'. Programmører skal være forsigtige med at bruge arraygrænserne og dermed undgå ArrayIndexOutOfBoundsException.
Brug af Enhanced For Loop
En forbedret for loop eller for hver loop gentages over sammenhængende hukommelsesplaceringer som arrays og har kun adgang til de juridiske indekser. Derfor, når forbedret til loop bruges, behøver vi ikke bekymre os om forkerte eller ulovlige indeks, der er adgang til.
Eksempel på iterering over en matrix ved hjælp af 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 + ' '); } } }
Produktion:
Vi har brugt en forbedret for-løkke i ovenstående program til at gentage antallet af emner. Bemærk, at for denne sløjfe behøver vi ikke specifikt at angive indekset. Derfor går sløjfen over arrayet, indtil slutningen af arrayet er nået.
Det er således let at rette ArrayOutOfBoundsException ved at bruge korrekte indekser og være forsigtig, når du angiver arraygrænser. Vi kan også bruge forbedret til loop til at gentage sig over arrays.
Lad os gå videre til at besvare et par ofte stillede spørgsmål vedrørende undtagelser i arrays.
Ofte stillede spørgsmål
Q # 1) Hvorfor opstår ArrayIndexOutOfBoundsException?
Svar: ArrayIndexOutOfBoundsException opstår, når du forsøger at få adgang til et matrixindeks, der ikke eksisterer, dvs. indekset er enten negativt eller uden for grænserne med arraygrænserne.
Q # 2) Hvad er NegativeArraySizeException?
Svar: NegativeArraySizeException er en runtime-undtagelse, der kastes, hvis en matrix er defineret med en negativ størrelse.
Q # 3) Hvad er array uden for bundet undtagelse?
Svar: En matrix uden for bundet undtagelse opstår, når et program forsøger at få adgang til et matrixelement ved at angive et negativt indeks eller et indeks, der ikke er inden for området for det specificerede array.
Q # 4) Kan vi smide NullPointerException i Java?
Svar: Ja, du kan smide NullPointerException i Java, ellers vil JVM gøre det for dig.
Q # 5) Er NullPointerException kontrolleret eller ikke markeret?
Svar: NullPointerException er ikke markeret og udvider RuntimeException. Det tvinger ikke programmøren til at bruge fangstblokken til at håndtere den.
Konklusion
I denne vejledning diskuterede vi detaljerne i ArrayIndexOutOfBoundsException i Java. Denne undtagelse kastes normalt, når vi i et program forsøger at få adgang til matrixelementerne ved hjælp af det negative indeks eller uden for grænserne, f.eks. Ved at angive et indeks, der er større end den angivne matrixlængde.
Denne undtagelse kan undgås ved at tage sig af indekser, mens du får adgang til arrays eller ved hjælp af forbedret for loop, som kun ved design har adgang til lovlige indekser.
Vi går videre til andre matrixemner i vores efterfølgende tutorials.
=> Udforsk det GRATIS Java-kursus her.
Anbefalet læsning
- Java Reflection Tutorial med eksempler
- Java Array Length Tutorial med kodeeksempler
- Java-undtagelser og undtagelseshåndtering med eksempler
- JAVA-vejledning til begyndere: 100+ praktiske Java-videovejledninger
- Adgang modifikatorer i Java - vejledning med eksempler
- Java Array - Hvordan udskrives elementer af en matrix i Java?
- Introduktion til Java-programmeringssprog - Videovejledning
- Java SWING Tutorial: Container, komponenter og håndtering af begivenheder