如何在Java中处理StringIndexOutOfBoundsException(未选中)?

的StringIndexOutOfBoundsException 是一个未经检查的 异常 在Java中。字符串是一种字符集合。字符串 对象 范围为 [0,字符串的长度]。当有人尝试访问超出实际字符串值范围的限制的字符时,会发生此异常。

例1

public class StringDemo {
   public static void main(String[] args) {
      String str = "Welcome to nhooo.com.";
      System.out.println("Length of the String is: " + str.length());
      System.out.println("Length of the substring is: " + str.substring(28));
   }
}

输出结果

Length of the String is: 27
Exception in thread "main" java.lang.StringIndexOutOfBoundsException: String index out of range: -1
       at java.lang.String.substring(String.java:1931)
       at StringDemo.main(StringDemo.java:6)


如何处理StringIndexOutOfBoundsException

  • 我们可以使用String.length() 方法检查字符串的范围,然后相应地访问它的字符。

  • 我们可以在代码片段周围使用try and catch块 ,它可能会抛出StringIndexOutOfBoundsException

例2

public class StringIndexOutOfBoundsExceptionTest {
   public static void main(String[] args) {
      String str = "Welcome to nhooo.com.";
      try {
        // StringIndexOutOfBoundsException will be thrown because str only has a length of 27.str.charAt(28);
         System.out.println("String Index is valid");
      } catch (StringIndexOutOfBoundsException e) {
         System.out.println("String Index is out of bounds");
      }
   }
}

输出结果

String Index is out of bounds