how handle arrayindexoutofboundsexception java
Цей підручник містить детальне пояснення про важливий виняток, який створюють масиви Java, тобто ArrayIndexOutOfBoundsException на простих прикладах:
Ми дізналися все про масиви в наших попередніх підручниках. Масиви мають статичний характер, і їх розмір або розмір визначається під час їх декларування. Ми також знаємо, що цей розмір або кількість елементів, оголошених для масиву, є фіксованими і нумеруються від 0.
Іноді логіка програми така, що програма намагається отримати доступ до елемента з неіснуючого індексу. Наприклад, через збої в програмі програма може спробувати отримати доступ до 11гоелемент у масиві з 10 елементів. Це призводить до ненормального стану.
=> Ознайомтесь із повним тренінгом Java для початківців
Java надає виняток у пакеті «java.lang», який видається при доступі до неіснуючого індексу масиву. Це називається 'ArrayIndexOutOfBoundsException'.
Що ви дізнаєтесь:
ArrayIndexOutOfBoundsException
Як уже зазначалося, при спробі отримати доступ до елементів масиву понад певну довжину або від'ємний індекс, компілятор видає 'ArrayIndexOutOfBoundsException'.
ArrayIndexOutOfBoundsException реалізує інтерфейс, що серіалізується, і походить від ‘indexOutOfBoundsException’, який, у свою чергу, походить від класу RuntimeException, який є підкласом класу ‘виняток’. Усі ці класи належать до пакету «java.lang».
ArrayIndexOutOfBoundsException - це час виконання, неперевірений виняток, тому його не потрібно явно викликати з методу. Далі наведена діаграма класів ArrayIndexOutOfBoundsException, яка показує ієрархію успадкування, а також конструктори для цього винятку.
Діаграма класу ArrayIndexOutOfBoundsException
sql запитує запитання та відповіді
Як пояснювалося раніше, клас ArrayIndexOutOfBoundsException має три суперкласи, тобто java.lang.exception, java.lang. runtimeException та java.lang.indexOutOfBoundsException.
Далі ми побачимо кілька прикладів ArrayIndexOutOfBoundsException у Java.
Приклад винятку ArrayIndexOutOfBounds
Давайте подивимось перший приклад, який показує викид ArrayIndexOutOfBounds Exception.
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 елементів. Однак у циклі for ми встановили умову ітерації як 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.
Нижче наведено ще один приклад доступу до від’ємного індексу.
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. Отже, другий вираз викидає ArrayIndexOutOfBoundsException, як показано на виході.
Уникання ArrayIndexOutOfBoundsException
Загальною причиною виникнення ArrayIndexOutOfBoundsException є те, що програміст допускає помилку, використовуючи індекси масивів.
Таким чином, програміст може дотримуватися наведених нижче методів, щоб уникнути виникнення ArrayIndexOutOfBoundsException.
Використовуйте правильні індекси початку та кінця
Масиви завжди починаються з індексу 0, а не 1. Аналогічним чином, до останнього елемента масиву можна отримати доступ, використовуючи індекс «довжина масиву-1», а не «довжина масиву». Програмісти повинні бути обережними, використовуючи обмеження масиву, і таким чином уникати ArrayIndexOutOfBoundsException.
Використання Enhanced For Loop
Удосконалений цикл for або для кожного циклу перебирає суміжні місця пам’яті, такі як масиви, і отримує доступ лише до правових індексів. Отже, коли використовується розширений цикл for, нам не потрібно турбуватися про доступ неправильних або незаконних індексів.
Приклад ітерації масиву за допомогою 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 + ' '); } } }
Вихід:
Ми використовували розширений цикл for у вищезазначеній програмі для ітерації масиву тем. Зверніть увагу, що для цього циклу нам не потрібно явно вказувати індекс. Отже, цикл повторюється над масивом до кінця масиву.
основні запитання для інтерв’ю у Java для свіжих
Таким чином, легко виправити ArrayOutOfBoundsException, використовуючи належні індекси та дбаючи про вказівку меж масиву. Ми також можемо використовувати вдосконалений цикл for для ітерації масивів.
Давайте перейдемо до відповіді на кілька поширених запитань щодо винятків у масивах.
Часті запитання
Q # 1) Чому виникає ArrayIndexOutOfBoundsException?
Відповідь: ArrayIndexOutOfBoundsException виникає при спробі отримати доступ до індексу масиву, який не існує, тобто. індекс або від’ємний, або виходить за межі обмежень масиву.
Q # 2) Що таке NegativeArraySizeException?
Відповідь: NegativeArraySizeException - це виняток виконання, який видається, якщо масив визначений із від'ємним розміром.
Q # 3) Що таке масив із пов'язаного винятку?
Відповідь: Виняток з обмеженого масиву виникає, коли програма намагається отримати доступ до елемента масиву, вказавши від’ємний індекс або індекс, який не знаходиться в діапазоні вказаного масиву.
Q # 4) Чи можемо ми створити NullPointerException у Java?
Відповідь: Так, ви можете перекинути NullPointerException на Java, інакше JVM зробить це за вас.
Q # 5) Чи перевірено чи не встановлено NullPointerException?
Відповідь: NullPointerException не позначено і поширює RuntimeException. Це не змушує програміста використовувати блок catch для його обробки.
Висновок
У цьому підручнику ми обговорили деталі ArrayIndexOutOfBoundsException у Java. Цей виняток зазвичай виникає, коли в програмі ми намагаємось отримати доступ до елементів масиву за допомогою негативного індексу або індексу поза межами, як-от зазначення індексу, який перевищує вказану довжину масиву.
Цього винятку можна уникнути, подбавши про індекси під час доступу до масивів або використовуючи розширений цикл for, який за дизайном отримує доступ лише до законних індексів.
У наступних уроках ми перейдемо до інших тем масивів.
=> Ознайомтесь з БЕЗКОШТОВНИМ курсом Java тут.
Рекомендована література
- Підручник з роздумів про Java з прикладами
- Підручник з довжини масиву Java із прикладами коду
- Винятки Java та обробка винятків з прикладами
- Підручник JAVA для початківців: 100+ практичних навчальних посібників Java
- Модифікатори доступу в Java - Підручник із прикладами
- Java Array - Як надрукувати елементи масиву в Java?
- Вступ до мови програмування Java - Підручник з відео
- Підручник з Java SWING: Контейнер, компоненти та обробка подій