StringIndexOutOfBoundsException in Java with Example

In this article, we will understand what is StringIndexOutOfBoundsException in Java with an example and how to handle and avoid StringIndexOutOfBoundsException.

What is StringIndexOutOfBoundsException? 

StringIndexOutOfBoundsException is a runtime exception thrown when an attempt is made to access an index in the String object that is either negative or greater than or equal to the size of the string. It is a subclass of the IndexOutOfBoundsException and shares its characteristics but is specifically tailored to handle erroneous operations on strings. 

Common Scenarios 

Substring Operations: When trying to extract a substring and the starting or ending index is out of bounds. 

Character Access: Using the charAt method with an invalid index. 

Unvalidated Inputs: Accessing string indices based on user inputs or external data without prior validation.

StringIndexOutOfBoundsException Class Diagram

Java StringIndexOutOfBoundsException Example

In the below example, the exception occurred because the referenced index was not present in the String.
package com.javaguides.corejava;

public class StringIndexOutOfBounds {

    public static void main(String[] args) {

        String str = "Hello World";
        try {
            char charAtNegativeIndex = str.charAt(-1); // Trying to access at negative index
            char charAtLengthIndex = str.charAt(11); // Trying to access at index equal to size of the string
        } catch (StringIndexOutOfBoundsException e) {
            System.err.println("StringIndexOutOfBoundsException caught");
            e.printStackTrace();
        }
    }
}
Output:
StringIndexOutOfBoundsException caught
java.lang.StringIndexOutOfBoundsException: String index out of range: -1
 at java.lang.String.charAt(String.java:658)
 at com.javaguides.corejava.StringIndexOutOfBounds.main(StringIndexOutOfBounds.java:9)

How to Handle and Avoid StringIndexOutOfBoundsException 

Boundary Checks: Before accessing characters or substrings, ensure that the indices lie within 0 and string.length() - 1

Use length() Wisely: The length() method gives the number of characters in the string. Always use this to validate your indices. 

String Manipulation Methods: Familiarize yourself with Java's built-in string methods which often include boundary checks. 

Validate External Inputs: As with arrays, if string operations are determined by external inputs, always validate those indices. 

Handle with Grace: In scenarios where this exception is possible, use try-catch blocks to handle it gracefully and inform the user or log the error. 

Comments