Автор оригинала: Pankaj Kumar.
ява.ланг.Исключение ArrayIndexOutOfBoundsException является исключением времени выполнения, поэтому это непроверенное исключение, и его не нужно явно вызывать из метода. Обратитесь к обработке исключений в java
java.lang.ArrayIndexOutOfBoundsException
- Исключение ArrayIndexOutOfBoundsException выдается, чтобы указать, что мы пытаемся получить доступ к элементу массива с незаконным индексом.
- Это исключение возникает, когда индекс либо отрицательный, либо больше или равен размеру массива.
Диаграмма классов ArrayIndexOutOfBoundsException
Суперклассами ArrayIndexOutOfBoundsException являются Исключение
, Исключение RuntimeException
и Исключение IndexOutOfBoundsException
.
ява.ланг.Пример исключения ArrayIndexOutOfBoundsException
Давайте рассмотрим простой пример, в котором наша программа может выдавать исключение ArrayIndexOutOfBoundsException на основе пользовательского ввода.
package com.journaldev.exceptions; import java.util.Scanner; public class ArrayIndexOutOfBoundsExceptionExample { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("Enter size of int array:"); int size = sc.nextInt(); int[] intArray = new int[size]; for (int i = 0; i < size; i++) { System.out.println("Please enter int value at index " + i + ":"); intArray[i] = sc.nextInt(); } System.out.println("Enter array index to get the value:"); int index = sc.nextInt(); sc.close(); System.out.println("Value at " + index + " = " + intArray[index]); } }
Ниже в журнале показан один из этапов выполнения вышеуказанной программы.
Enter size of int array: 3 Please enter int value at index 0: 1 Please enter int value at index 1: 2 Please enter int value at index 2: 3 Enter array index to get the value: 4 Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4 at com.journaldev.exceptions.ArrayIndexOutOfBoundsExceptionExample.main(ArrayIndexOutOfBoundsExceptionExample.java:23)
Таким образом, наша программа может создать исключение ArrayIndexOutOfBoundsException из-за незаконного ввода от пользователя. Также обратите внимание, что трассировка стека исключений выводит недопустимый индекс, вызывающий исключение.
Как исправить исключение ArrayIndexOutOfBoundsException
Мы не должны пытаться оправиться от этого исключения, мы должны попытаться смягчить его, проверив, является ли переданное значение индекса допустимым или нет. Также обратите внимание, что такая ситуация может возникнуть в основном при вводе пользователем, если мы сами создаем массив и перебираем его элементы, то шансы на это исключение меньше.
Ниже фрагмент кода показывает небольшое изменение в программе при вводе данных пользователем для доступа к элементу, если переданное значение недопустимо, отображается предупреждающее сообщение о передаче допустимого значения.
boolean exit = false; while (!exit) { System.out.println("Enter array index to get the value:"); int index = sc.nextInt(); if (index < 0 || index >= size) { System.out.println("Valid index range is from 0 to " + (size - 1)); } else { System.out.println("Value at " + index + " = " + intArray[index]); exit = true; //to terminate the program sc.close(); //close resources } }
Теперь вывод будет таким, как показано ниже, при передаче незаконного индекса.
Enter size of int array: 3 Please enter int value at index 0: 1 Please enter int value at index 1: 2 Please enter int value at index 2: 3 Enter array index to get the value: 4 Valid index range is from 0 to 2 Enter array index to get the value: -1 Valid index range is from 0 to 2 Enter array index to get the value: 2 Value at 2 = 3
Таким образом, именно так мы избегаем исключения ArrayIndexOutOfBoundsException в нашей программе. Это все для быстрого обзора на java.lang.Исключение ArrayIndexOutOfBoundsException
.
Ссылка: API Doc