Java
 Computer >> コンピューター >  >> プログラミング >> Java

JavaでStringIndexOutOfBoundsException(非検査例外)を処理する方法

StringIndexOutOfBoundsExceptionは、Javaにおける非検査例外(unchecked exception)の一つです。文字列は文字の集合体であり、Stringオブジェクトが持つ有効なインデックス範囲は [0、文字列の長さ] です。実際の文字列の範囲を超えて文字へアクセスしようとした場合に、この例外が発生します。

例1:例外が発生するケース

public class StringDemo {
    public static void main(String[] args) {
        String str = "Welcome to Tutorials Point.";
        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: 28
        at java.lang.String.substring(String.java:1931)
        at StringDemo.main(StringDemo.java:6)

この例では、文字列の長さは27であるにもかかわらず、substring(28)によって28番目以降の部分文字列を取得しようとしているため、例外がスローされます。

StringIndexOutOfBoundsExceptionへの対処方法

  • String.length()メソッドを使って事前に文字列の長さを確認し、その範囲内でのみ文字や部分文字列にアクセスするようにします。
  • try-catchブロックで、StringIndexOutOfBoundsExceptionがスローされる可能性のあるコードを囲み、例外を捕捉して適切に処理します。

例2:try-catchによる例外処理

public class StringIndexOutOfBoundsExceptionTest {
    public static void main(String[] args) {
        String str = "Welcome to Tutorials Point.";
        try {
            // strの長さは27のため、charAt(28)はStringIndexOutOfBoundsExceptionをスローする
            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

このように、charAt()substring()などインデックスを扱うメソッドを使用する際は、あらかじめlength()で文字列の長さを確認するか、try-catchで例外処理を行うことで、プログラムの異常終了を防ぐことができます。

  1. JavaのGsonで@SerializedNameアノテーションを使ってJSONプロパティ名を変更する方法

    JavaのオブジェクトをJSONに変換する際、クラスのフィールド名とは異なるプロパティ名で出力したいケースはよくあります。そんなときに役立つのが、Gsonが提供する@SerializedNameアノテーションです。このアノテーションを付与すると、シリアライズ(JSONへの変換)・デシリアライズ(JSONからの復元)の両方において、指定した名前がフィールド名として使用されます。なお、@SerializedNameはGsonインスタンスに設定されたデフォルトの命名ポリシーを含む、あらゆるFieldNamingPolicyを上書きします。命名ポリシー自体を切り替えたい場合は、GsonBuilderク

  2. JavaのStringIndexOutOfBoundsExceptionとは?発生原因と対処法をわかりやすく解説

    StringIndexOutOfBoundsExceptionとはJavaにおいて、文字列(String)は一連の文字を格納するために使用され、オブジェクトとして扱われます。文字列は、java.langパッケージに含まれるStringクラスによって表現されます。文字列の作成方法は主に2つあります。1つは他のオブジェクトと同様にnewキーワードを使用する方法、もう1つはプリミティブ型のようにリテラルを直接代入する方法です。String stringObject = new String(Hello how are you); String stringLiteral = Welcome to T