スマートフォン用の表示で見る

NullPointerException

コンピュータ

NullPointerException

ぬるぽいんたーえくせぷしょん

プログラミング言語の一つであるJava言語の(実行時)例外クラス、java.lang.NullPointerException

簡潔に言えば「null値の参照型変数を参照している」という例外。たとえばJava 5(J2SE 5.0)以上で有効なこのコード。

"".contains((java.lang.CharSequence)null);

これはStringクラスのJavadocに書いてあるとおりなのだが、そうでなくても普通にJavaプログラミングをしていると例外なくお目にかかる。あまりにもよく目にするため、しばしば「ぬるぽ」とか「NPE」などと縮めて呼ばれる*1

プログラムの動作異常として「ぬるぽ」に出会った場合、原因究明に手間取り時間を浪費してしまうことが多い。そして、この例外が原因である場合には、とてもがっかりしてやる気を失ってしまうことがままある。


回避するためには、

などの方法が挙げられる。

同様のエラー(nullで表現されるメモリ空間へのアクセス)は他の言語でも*3発生する可能性があるので、そのオブジェクト変数(もしくはポインタ)がどのメモリ空間を指しているのかを意識しながらプログラムを行うのが重要である(メモリはどこで確保されて、誰が開放してくれるのか、など)。

*1:nullを英語読みして「なるぽ」と呼ばれることもある。

*2:特に、Stringオブジェクトでは初期化の次に空文字「""」をセットしておく事が重要。これだけで回避できるNullPointerExceptionは数多くある。

*3:少なくともJavaプラットフォーム上の言語では