JavaマスターJavaプログラムサンプル集例外のサンプル → StringIndexOutOfBoundsException対策

StringIndexOutOfBoundsException対策

文字列内の文字位置を指定したときに発生しがちなStringIndexOutOfBoundsExceptionの説明です。

StringIndexOutOfBoundsExceptionは、文字列に対して 文字位置を指定する操作を実行したときに、発生する可能性があります。

より具体的には、配列の場合と同様に、負の数、あるいは(文字列の長さ - 1)よりも 大きな数にて位置を指定した場合に発生します。

samples/exception/index/StringIndexOutOfBoundsExceptionTest.java - Eclipse SDK
package samples.exception.index;

public class StringIndexOutOfBoundsExceptionTest {
  public static void main(String[] args) {
    try {
      String s = "java";
      System.out.println(s.charAt(4));
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}

上記の例では、文字列変数 s に 「Java」 という4文字からなる文字列を設定しています。 そして、charAt メソッドにて、位置を指定して、その位置の一文字を取得しようとしています。 文字位置は0から数え始めますので、この場合は0, 1, 2, 3 のいずれかならば 問題ないのですが、ここでは、わざと、存在しない 4番目にアクセスしようとしていますので、 例外が発生します。

コマンド プロンプト

C:\JavaMaster\bin>java -cp . samples.exception.index.StringIndexOutOfBoundsExceptionTest 
java.lang.StringIndexOutOfBoundsException: String index out of range: 4
    at java.lang.String.charAt(Unknown Source)
    at samples.exception.index.StringIndexOutOfBoundsExceptionTest.main(StringIndexOutOfBoundsExceptionTest.java:7)