What is hierarchy of java.lang.ArrayIndexOutOfBoundsException?
-java.lang.Object
 -java.lang.Throwable
  -java.lang.Exception
   -java.lang.RuntimeException
    -java.lang.IndexOutOfBoundsException
     -java.lang.ArrayIndexOutOfBoundsException
ArrayIndexOutOfBoundsException is Checked (compile time exceptions) and UnChecked (RuntimeExceptions) in java ?
java.lang.ArrayIndexOutOfBoundsException is a RuntimeExceptions in java.
What is ArrayIndexOutOfBoundsException in java?
ArrayIndexOutOfBoundsException is thrown when an array is accessed with an illegal index.
The index accessed may be >
- Negative or
 - equal to the size of array
 - greater than the size of array.
 
Scenarios where ArrayIndexOutOfBoundsException may be thrown in java>
Let’s take an example where using array can throw ArrayIndexOutOfBoundsException >
- If index accessed is Negative, ArrayIndexOutOfBoundsException is thrown
 - If index accessed is equal to the size of array, ArrayIndexOutOfBoundsException is thrown
 - If index accessed is greater than the size of array, ArrayIndexOutOfBoundsException is thrown
 
public class ArrayIndexOutOfBoundsExceptionExample { 
  public static void main(String args[]) { 
      int ar[] = { 11, 22, 23, 31}; 
      //If index accessed is Negative, ArrayIndexOutOfBoundsException is thrown 
      //System.out.println(ar[-1]); 
      System.out.println(ar[0]); //11 
      System.out.println(ar[1]); //22 
      System.out.println(ar[2]); //23 
      System.out.println(ar[3]); //31 
      //If index accessed is equal to the size of array, ArrayIndexOutOfBoundsException is thrown 
      //System.out.println(ar[4]); 
      //If index accessed is greater than the size of array, ArrayIndexOutOfBoundsException is thrown 
      //System.out.println(ar[5]); 
  } 
} 
 | 
If we uncomment any of the above comment line ArrayIndexOutOfBoundsException will be thrown >
System.out.println(ar[-1]);
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
at ArrayIndexOutOfBoundsExceptionExample.main( ArrayIndexOutOfBoundsExceptionExample.java:6)
System.out.println(ar[4]);
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 4
at ArrayIndexOutOfBoundsExceptionExample.main( ArrayIndexOutOfBoundsExceptionExample.java:14)
System.out.println(ar[5]);
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 5
at ArrayIndexOutOfBoundsExceptionExample.main( ArrayIndexOutOfBoundsExceptionExample.java:17)
Let’s take an example where using java.util.ArrayList can throw ArrayIndexOutOfBoundsException >
- If index accessed is Negative, ArrayIndexOutOfBoundsException is thrown
 - If index accessed is equal to the size of ArrayList, ArrayIndexOutOfBoundsException is thrown
 - If index accessed is greater than the size of ArrayList, ArrayIndexOutOfBoundsException is thrown
 
import java.util.ArrayList; 
import java.util.List; 
public class ArrayIndexOutOfBoundsExceptionExample2 { 
  public static void main(String args[]) { 
      List<Integer> arrayList = new ArrayList<Integer>(); 
      arrayList.add(11); 
      arrayList.add(22); 
      arrayList.add(23); 
      arrayList.add(31); 
      //If index accessed is Negative, ArrayIndexOutOfBoundsException is thrown 
      //System.out.println(arrayList.get(-1)); 
      System.out.println(arrayList.get(0)); //11 
      System.out.println(arrayList.get(1)); //22 
      System.out.println(arrayList.get(2)); //23 
      System.out.println(arrayList.get(3)); //31 
      //If index accessed is equal to the size of array, ArrayIndexOutOfBoundsException is thrown 
      //System.out.println(arrayList.get(4)); 
      //If index accessed is greater than the size of array, ArrayIndexOutOfBoundsException is thrown 
      //System.out.println(arrayList.get(5)); 
  } 
} 
/*OUTPUT 
11 
22 
23 
31 
*/ 
 | 
If we uncomment any of the above comment line ArrayIndexOutOfBoundsException will be thrown >
System.out.println(arrayList.get(-1))
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: -1
  at java.util.ArrayList.elementData(Unknown Source)
  at java.util.ArrayList.get(Unknown Source)
  at ArrayIndexOutOfBoundsExceptionExample2.main(ArrayIndexOutOfBoundsExceptionExample2.java:14)
System.out.println(arrayList.get(4))
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 4, Size: 4
  at java.util.ArrayList.rangeCheck(Unknown Source)
  at java.util.ArrayList.get(Unknown Source)
  at ArrayIndexOutOfBoundsExceptionExample2.main(ArrayIndexOutOfBoundsExceptionExample2.java:22)
System.out.println(arrayList.get(5))
Exception in thread "main" java.lang.IndexOutOfBoundsException: Index: 5, Size: 4
  at java.util.ArrayList.rangeCheck(Unknown Source)
  at java.util.ArrayList.get(Unknown Source)
  at ArrayIndexOutOfBoundsExceptionExample2.main(ArrayIndexOutOfBoundsExceptionExample2.java:25)