how handle arrayindexoutofboundsexception java
hvordan generere tilfeldige tall i c ++ mellom 0 og 100
Denne opplæringen gir en detaljert forklaring om et viktig unntak fra Java Arrays, dvs. ArrayIndexOutOfBoundsException med enkle eksempler:
Vi har lært alt om Arrays i våre tidligere veiledninger. Arrangementer er statiske og deres dimensjon eller størrelse bestemmes på tidspunktet for erklæringen. Vi vet også at denne størrelsen eller antall elementer deklarert for matrisen er faste og er nummerert fra 0.
Noen ganger er programlogikken slik at programmet prøver å få tilgang til elementet fra en ikke-eksisterende indeks. For eksempel, på grunn av feil i et program, kan et program prøve å få tilgang til 11thelement i matrisen med 10 elementer. Dette resulterer i en unormal tilstand.
=> Sjekk ut den komplette Java-opplæringen for nybegynnere
Java gir et unntak i pakken ‘java.lang’ som kastes når en ikke-eksisterende matriseindeks er tilgjengelig. Dette er kjent som “ArrayIndexOutOfBoundsException”.
Hva du vil lære:
ArrayIndexOutOfBoundsException
Som allerede sagt, når du prøver å få tilgang til matriseelementer utover en spesifisert lengde eller en negativ indeks, kaster kompilatoren 'ArrayIndexOutOfBoundsException'.
ArrayIndexOutOfBoundsException implementerer et 'serialiserbart' grensesnitt og kommer fra 'indexOutOfBoundsException' som igjen er avledet fra RuntimeException-klassen som er en underklasse av klassen 'unntak'. Alle disse klassene tilhører pakken ‘java.lang’.
ArrayIndexOutOfBoundsException er et runtime, ukontrollert unntak og trenger derfor ikke å kalles eksplisitt fra en metode. Følgende er klassediagrammet til ArrayIndexOutOfBoundsException som viser arvshierarkiet så vel som konstruktørene for dette unntaket.
Klassediagram over matriseIndexOutOfBoundsException
Som forklart tidligere har ArrayIndexOutOfBoundsException-klassen tre superklasser, dvs. java.lang.exception, java.lang. runtimeException og java.lang.indexOutOfBoundsException.
Deretter vil vi se noen eksempler på ArrayIndexOutOfBoundsException i java.
Eksempel på unntak av ArrayIndexOutOfBounds
La oss se det første eksemplet som viser at ArrayIndexOutOfBounds Exception blir kastet.
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) + ' '); } }
Produksjon:
I programmet ovenfor har vi matematikkfag som består av 5 elementer. I for-løkken har vi imidlertid satt iterasjonstilstanden 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 annet eksempel på tilgang til den negative indeksen.
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)); }
Produksjon:
I det ovennevnte programmet erklærer vi en matrise av typen heltall og får deretter tilgang til elementene ved hjelp av individuelle indekser. Det første uttrykket er gyldig, men i det andre uttrykket har vi forsøkt å få tilgang til elementet ved indeks = -4. Derfor kaster det andre uttrykket ArrayIndexOutOfBoundsException som vist i utdataene.
Unngå ArrayIndexOutOfBoundsException
Den vanlige årsaken til forekomsten av ArrayIndexOutOfBoundsException er at programmereren gjør en feil ved å bruke matriseindeksene.
Dermed kan programmereren følge teknikkene nedenfor for å unngå forekomst av ArrayIndexOutOfBoundsException.
Bruk riktige start- og sluttindekser
Arrays starter alltid med indeks 0 og ikke 1. På samme måte kan det siste elementet i arrayet nås ved hjelp av indeksen 'arraylength-1' og ikke 'arraylength'. Programmører bør være forsiktige når de bruker arraygrensene og dermed unngå ArrayIndexOutOfBoundsException.
Bruke Enhanced For Loop
En forbedret sløyfe eller for hver sløyfe gjentas over sammenhengende minneplasser som matriser og får kun tilgang til de juridiske indeksene. Derfor når vi bruker forbedret for loop, trenger vi ikke bekymre oss for at feil eller ulovlige indekser blir brukt.
Eksempel på iterering over en matrise ved hjelp av 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 + ' '); } } }
Produksjon:
Vi har brukt en forbedret for loop i det ovennevnte programmet for å iterere over en rekke fag. Merk at for denne sløyfen trenger vi ikke spesifisere indeksen eksplisitt. Derfor går sløyfen over matrisen til slutten av matrisen er nådd.
Dermed er det enkelt å fikse ArrayOutOfBoundsException ved å bruke riktige indekser og være forsiktig når du spesifiserer arraygrensene. Vi kan også bruke forbedret for loop for å gjentas over matriser.
La oss gå videre til å svare på noen ofte stilte spørsmål angående unntak i matriser.
ofte stilte spørsmål
Q # 1) Hvorfor oppstår ArrayIndexOutOfBoundsException?
Svar: ArrayIndexOutOfBoundsException oppstår når du prøver å få tilgang til en matriseindeks som ikke eksisterer, dvs. indeksen er enten negativ eller utenfor grensene med arraygrensene.
Q # 2) Hva er NegativeArraySizeException?
Svar: NegativeArraySizeException er et kjøretids unntak som kastes hvis en matrise er definert med en negativ størrelse.
Q # 3) Hva er array uten bundet unntak?
Svar: En matrise utenfor bundet unntak oppstår når et program prøver å få tilgang til et matriseelement ved å spesifisere en negativ indeks eller en indeks som ikke er i området for den angitte matrisen.
Q # 4) Kan vi kaste NullPointerException i Java?
Svar: Ja, du kan kaste NullPointerException i Java, ellers vil JVM gjøre det for deg.
Q # 5) Er NullPointerException sjekket eller ikke merket av?
Svar: NullPointerException er ukontrollert og utvider RuntimeException. Det tvinger ikke programmereren til å bruke fangstblokken til å håndtere den.
Konklusjon
I denne opplæringen diskuterte vi detaljene i ArrayIndexOutOfBoundsException i Java. Dette unntaket blir vanligvis kastet når vi i et program prøver å få tilgang til matriseelementene ved hjelp av den negative indeksen eller indeksen utenfor grensene, slik som å spesifisere en indeks som er større enn den angitte matelengden.
Dette unntaket kan unngås ved å ta vare på indekser mens du får tilgang til arrays eller ved å bruke forbedret for loop som ved design kun har tilgang til lovlige indekser.
Vi vil gå videre til andre matematikkemner i våre påfølgende opplæringsprogrammer.
=> Utforsk GRATIS Java-kurset her.
Anbefalt lesing
- Java Reflection Tutorial med eksempler
- Java Array Length Tutorial With Code Eksempler
- Java-unntak og unntakshåndtering med eksempler
- JAVA-opplæring for nybegynnere: 100+ praktiske Java-videoveiledninger
- Få tilgang til modifikatorer i Java - opplæring med eksempler
- Java Array - Hvordan skrive ut elementer av en array i Java?
- Introduksjon til Java Programming Language - Video Tutorial
- Java SWING Tutorial: Container, Components and Event Handling