how handle arrayindexoutofboundsexception java
Tento kurz poskytuje podrobné vysvětlení důležité výjimky vyvolané sadami Java Array, tj. ArrayIndexOutOfBoundsException s jednoduchými příklady:
Naučili jsme se vše o polích v našich předchozích výukových programech. Pole mají statickou povahu a jejich rozměr nebo velikost se určuje v době jejich deklarace. Víme také, že tato velikost nebo počet prvků deklarovaných pro pole jsou pevné a jsou očíslovány od 0.
Logika programu je někdy taková, že se program pokusí o přístup k prvku z neexistujícího indexu. Například, kvůli závadám v programu se program může pokusit o přístup k 11thprvek v poli 10 prvků. To má za následek abnormální stav.
=> Podívejte se na kompletní školení Java pro začátečníky
Java poskytuje výjimku v balíčku „java.lang“, která je vyvolána při přístupu k neexistujícímu indexu pole. Toto se nazývá „ArrayIndexOutOfBoundsException“.
Co se naučíte:
ArrayIndexOutOfBoundsException
Jak již bylo uvedeno, při pokusu o přístup k prvkům pole nad zadanou délku nebo záporný index kompilátor vyvolá ‚ArrayIndexOutOfBoundsException '.
ArrayIndexOutOfBoundsException implementuje „serializovatelné“ rozhraní a je odvozeno od „indexOutOfBoundsException“, který je zase odvozen od třídy RuntimeException, která je podtřídou třídy „výjimka“. Všechny tyto třídy patří do balíčku „java.lang“.
ArrayIndexOutOfBoundsException je běhová, nekontrolovaná výjimka, a proto nemusí být explicitně volána z metody. Následuje diagram tříd ArrayIndexOutOfBoundsException, který ukazuje hierarchii dědičnosti i konstruktory pro tuto výjimku.
Diagram tříd ArrayIndexOutOfBoundsException
Jak již bylo vysvětleno dříve, třída ArrayIndexOutOfBoundsException má tři nadtřídy, tj. Java.lang.exception, java.lang. runtimeException a java.lang.indexOutOfBoundsException.
kontrola nefunkčních odkazů v nástrojích pro webmastery google
Dále uvidíme několik příkladů ArrayIndexOutOfBoundsException v Javě.
Příklad výjimky ArrayIndexOutOfBounds
Podívejme se na první příklad, který ukazuje vyvolání výjimky ArrayIndexOutOfBounds.
jak otevřít soubory bin na PC
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) + ' '); } }
Výstup:
Ve výše uvedeném programu máme řadu předmětů skládajících se z 5 prvků. Ve smyčce for jsme však nastavili podmínku iterace jako 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.
Níže je uveden další příklad přístupu k negativnímu indexu.
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)); }
Výstup:
Ve výše uvedeném programu deklarujeme pole typu integer a poté přistupujeme k prvkům pomocí jednotlivých indexů. První výraz je platný, ale ve druhém výrazu jsme se pokusili o přístup k prvku na index = -4. Proto druhý výraz vyvolá ArrayIndexOutOfBoundsException, jak je znázorněno na výstupu.
Vyhněte se ArrayIndexOutOfBoundsException
Běžnou příčinou výskytu ArrayIndexOutOfBoundsException je, že programátor udělá chybu při používání indexů pole.
Programátor tedy může postupovat podle níže uvedených technik, aby zabránil výskytu ArrayIndexOutOfBoundsException.
Použijte správné počáteční a koncové indexy
Pole vždy začínají indexem 0 a ne 1. Podobně lze k poslednímu prvku v poli přistupovat pomocí indexu „arraylength-1“ a ne „arraylength“. Programátoři by měli být při používání limitů pole opatrní a vyhnout se tak ArrayIndexOutOfBoundsException.
Použití funkce Enhanced For Loop
Vylepšená smyčka pro smyčku nebo smyčku pro každou iteruje přes souvislá místa v paměti, jako jsou pole, a přistupuje pouze k legálním indexům. Když se tedy použije smyčka enhanced for, nemusíme si dělat starosti s přístupem k nesprávným nebo nelegálním indexům.
Příklad iterace přes pole pomocí 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 + ' '); } } }
Výstup:
Ve výše uvedeném programu jsme použili iterovanou smyčku for k iteraci nad řadou předmětů. Všimněte si, že pro tuto smyčku nemusíme explicitně specifikovat index. Proto smyčka iteruje přes pole, dokud není dosaženo konce pole.
Proto je snadné opravit ArrayOutOfBoundsException pomocí správných indexů a opatrnosti při zadávání limitů pole. Můžeme také využít vylepšenou smyčku for k iteraci přes pole.
Pojďme odpovědět na několik často kladených otázek týkajících se výjimek v polích.
Často kladené otázky
Otázka 1) Proč dochází k ArrayIndexOutOfBoundsException?
Odpovědět: K ArrayIndexOutOfBoundsException dojde při pokusu o přístup k indexu pole, který neexistuje, tj. index je buď záporný, nebo je mimo hranice s limity pole.
Otázka 2) Co je NegativeArraySizeException?
Odpovědět: NegativeArraySizeException je výjimka za běhu, která je vyvolána, pokud je pole definováno se zápornou velikostí.
Otázka č. 3) Co je pole mimo vázanou výjimku?
Odpovědět: Pole mimo vázanou výjimku nastane, když se program pokusí o přístup k prvku pole zadáním záporného indexu nebo indexu, který není v rozsahu zadaného pole.
Otázka č. 4) Můžeme hodit NullPointerException v Javě?
Odpovědět: Ano, můžete hodit NullPointerException v Javě, jinak to JVM udělá za vás.
Otázka č. 5) Je NullPointerException zaškrtnuto nebo nezaškrtnuto?
Odpovědět: NullPointerException není zaškrtnuto a rozšiřuje RuntimeException. Nenutí programátora, aby k jeho zpracování použil blok catch.
jak otevřít torrent soubory v systému Windows 10
Závěr
V tomto kurzu jsme probrali podrobnosti ArrayIndexOutOfBoundsException v Javě. Tato výjimka se obvykle vyvolá, když se v programu pokusíme získat přístup k prvkům pole pomocí záporného indexu nebo indexu mimo hranice, jako je zadání indexu, který je větší než zadaná délka pole.
Této výjimce se lze vyhnout tím, že se postaráte o indexy při přístupu k maticím nebo pomocí vylepšené smyčky, která podle návrhu přistupuje pouze k legálním indexům.
V dalších cvičeních přejdeme k dalším tématům pole.
=> Prozkoumejte ZDARMA kurz Java zde.
Doporučené čtení
- Výukový program Java Reflection s příklady
- Výukový program Java Array Length s příklady kódu
- Výjimky Java a zpracování výjimek s příklady
- Výukový program JAVA pro začátečníky: 100+ praktických výukových programů Java Video
- Modifikátory přístupu v Javě - výuka s příklady
- Java Array - Jak tisknout prvky pole v Javě?
- Úvod do programovacího jazyka Java - výukový program
- Výukový program Java SWING: Kontejner, komponenty a zpracování událostí