how handle arrayindexoutofboundsexception java
Овај водич даје детаљно објашњење о важном изузетку који су избацили Јава низови, тј. АрраиИндекОутОфБоундсЕкцептион са једноставним примерима:
Све о низовима научили смо у нашим претходним водичима. Низови су статичне природе и његова димензија или величина одређују се у тренутку њихове декларације. Такође знамо да су ова величина или број декларисаних елемената за низ фиксни и нумерисани од 0.
Логика програма је понекад таква да програм покушава да приступи елементу из непостојећег индекса. На пример, због грешака у програму, програм може покушати да приступи 11тхелемент у низу од 10 елемената. То резултира абнормалним стањем.
=> Погледајте комплетну Јава обуку за почетнике
Јава пружа изузетак у пакету „јава.ланг“ који се баца када се приступи непостојећем индексу низа. Ово је познато као „АрраиИндекОутОфБоундсЕкцептион“.
Шта ћете научити:
АрраиИндекОутОфБоундсЕкцептион
Као што је већ речено, када покушате да приступите елементима низа преко одређене дужине или негативног индекса, компајлер баца „АрраиИндекОутОфБоундсЕкцептион“.
АрраиИндекОутОфБоундсЕкцептион имплементира „сериализабле“ интерфејс и потиче из „индекОутОфБоундсЕкцептион“ који је заузврат изведен из класе РунтимеЕкцептион која је подкласа класе „изузетак“. Све ове класе припадају пакету „јава.ланг“.
АрраиИндекОутОфБоундсЕкцептион је рунтиме, непровјерени изузетак и стога не мора бити експлицитно позиван из методе. Следи дијаграм класе АрраиИндекОутОфБоундсЕкцептион који приказује хијерархију наслеђивања као и конструкторе за овај изузетак.
Дијаграм класе АрраиИндекОутОфБоундсЕкцептион
Као што је раније објашњено, класа АрраиИндекОутОфБоундсЕкцептион има три суперкласе, тј. Јава.ланг.екцептион, јава.ланг. рунтимеЕкцептион и јава.ланг.индекОутОфБоундсЕкцептион.
Даље, видећемо неке примере АрраиИндекОутОфБоундсЕкцептион у јави.
Пример изузетка АрраиИндекОутОфБоундс
Погледајмо први пример који показује бачен изузетак АрраиИндекОутОфБоундс.
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) + ' '); } }
Излаз:
У горњем програму имамо низ предмета који се састоје од 5 елемената. Међутим, у петљи фор поставили смо услов итерације као и<=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.
Следећи пример је још један пример приступа негативном индексу.
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)); }
Излаз:
У горњем програму декларишемо низ целобројних типова, а затим приступамо елементима користећи појединачне индексе. Први израз је важећи, али у другом изразу смо покушали да приступимо елементу на индек = -4. Отуда други израз баца АрраиИндекОутОфБоундсЕкцептион као што је приказано у излазу.
Избегавање АрраиИндекОутОфБоундсЕкцептион
Уобичајени узрок настанка АрраиИндекОутОфБоундсЕкцептион је тај што програмер погреши у коришћењу индекса низа.
Стога програмер може следити доле наведене технике како би избегао појаву АрраиИндекОутОфБоундсЕкцептион.
Користите одговарајуће индексе почетка и краја
Низови увек почињу индексом 0, а не 1. Слично томе, последњем елементу низа може се приступити помоћу индекса „арраиленгтх-1“, а не „арраиленгтх“. Програмери би требали бити опрезни док користе ограничења низа и на тај начин избјегавати АрраиИндекОутОфБоундсЕкцептион.
Коришћење Енханцед Фор Лооп
Побољшана петља фор или за сваку итерацију врши на непрекидним меморијским локацијама попут низова и приступа само правним индексима. Стога, када се користи побољшана петља фор, не треба да бринемо о приступу погрешним или нелегалним индексима.
Пример понављања низа помоћу Енханцед фор Лооп.
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 + ' '); } } }
Излаз:
У горе наведеном програму користили смо побољшану петљу фор за итерацију низа предмета. Имајте на уму да за ову петљу не морамо експлицитно навести индекс. Стога се петља понавља преко низа док се не постигне крај низа.
Стога је лако поправити АрраиОутОфБоундсЕкцептион користећи одговарајуће индексе и водећи рачуна о одређивању ограничења низа. Такође можемо користити побољшану петљу фор за итерацију преко низова.
Пређимо на одговор на неколико често постављаних питања у вези са изузецима у низовима.
Често постављана питања
П # 1) Зашто се јавља АрраиИндекОутОфБоундсЕкцептион?
Одговор: АрраиИндекОутОфБоундсЕкцептион се јавља када покушате да приступите индексу низа који не постоји, тј. индекс је негативан или је ван граница с ограничењима низа.
П # 2) Шта је НегативеАрраиСизеЕкцептион?
Одговор: НегативеАрраиСизеЕкцептион је рунтиме изузетак који се баца ако је низ дефинисан негативном величином.
П # 3) Шта је низ изван везаног изузетка?
Одговор: Изузетак из ограниченог низа јавља се када програм покуша да приступи елементу низа специфицирањем негативног индекса или индекса који није у опсегу наведеног низа.
П # 4) Можемо ли бацити НуллПоинтерЕкцептион у Јави?
Одговор: Да, можете бацити НуллПоинтерЕкцептион у Јави, иначе ће ЈВМ то учинити уместо вас.
5. питање) Да ли је НуллПоинтерЕкцептион означен или није?
примјена засебне ланчане хеш табеле ц ++
Одговор: НуллПоинтерЕкцептион није означен и проширује РунтимеЕкцептион. То не приморава програмера да користи цатцх блок за његово руковање.
Закључак
У овом упутству смо разговарали о детаљима АрраиИндекОутОфБоундсЕкцептион у Јави. Овај изузетак се обично избацује када у програму покушавамо да приступимо елементима низа користећи негативни индекс или индекс ван граница, као што је навођење индекса који је већи од наведене дужине низа.
Овај изузетак може се избећи бригом о индексима док приступате низовима или употребом побољшане фор петље која дизајном приступа само правним индексима.
У следећим водичима прећи ћемо на друге теме низа.
=> Овде истражите БЕСПЛАТНИ курс Јава.
Препоручено читање
- Водич за Јава рефлексију са примерима
- Водич за дужину Јава низа са примерима кода
- Јава изузеци и руковање изузецима са примерима
- Водич за ЈАВА за почетнике: 100+ практичних Јава видео водича
- Приступити модификаторима у Јави - Водич са примерима
- Јава низ - Како исписати елементе низа у Јави?
- Увод у програмски језик Јава - Видео водич
- Јава СВИНГ лекције: Контејнери, компоненте и руковање догађајима