JavaマスターJavaプログラムサンプル集例外のサンプル → NullPointerException 対策(その1)

NullPointerException 対策(その1)

Javaでプログラミングを始めたとき、最初に遭遇するのが NullPointerException(ヌルポインタ例外) ではないでしょうか? このサンプルでは、どのような場合にNullPointerExceptionが 発生するのか、具体的な例を使って説明します。

まず、下記のサンプルプログラムをご覧ください。

samples/exception/nullpointer/NullPointer.java - Eclipse SDK
package samples.exception.nullpointer;

public class NullPointer {

  public static void main(String[] args) {
    try {
      String s = null;
      // sに具体的な文字列がセットされていない状態で、
      // sのメソッドを呼び出します。
      System.out.println(s.length());
    catch (Exception e) {
      e.printStackTrace();
    }
  }
}

このサンプルでは、文字列変数s を宣言していますが、その初期値にはnullを指定しています。

ちなみに、「String s;」 のように、初期値を代入せずに宣言することもできますが、 sが初期化されていないことはコード上明確ですので、「s.length()」のところで、 コンパイルエラーとなり、実行ができません。

実行した結果は以下のとおりです。

コマンド プロンプト

C:\JavaMaster\bin>java -cp . samples.exception.nullpointer.NullPointer 
java.lang.NullPointerException
    at samples.exception.nullpointer.NullPointer.main(NullPointer.java:10)

NullPointerException例外が発生したのは、10行目の、 sに対してlengthメソッドを呼び出したところです。

すなわち、「nullが代入されたオブジェクトのメソッドを呼ぶと、NullPointerExceptionが 発生する」ということがわかります。

さて、実際のプログラミングでは、もう少しわかりづらい状況で、 NullPointerExceptionが発生するのです。