読み方 : ヌルポインタエクセプション

NullPointerException

NullPointerExceptionとは?

Javaなどのプログラミング言語において、「何も参照していない状態」(null)のオブジェクトに対して操作を行おうとしたときに発生する例外。プログラム実行時エラーとして最も頻繁に生じるものの一つである。
NullPointerExceptionのイメージ画像

オブジェクト指向言語では、変数はデータそのものではなく、データが格納された場所を指し示す「参照」(reference)を保持している。変数に何も割り当てられていない状態では、参照先が存在しないことを示す特別な値として「null」(ヌル/ナル)が用いられる。

この状態の変数に対してメソッドの呼び出しやプロパティへのアクセスを試みると、参照先が存在しないためプログラムは処理を続けることができず、NullPointerExceptionを送出して停止する。値型と異なり、参照型では存在しない対象に対する操作が実行時まで検出されないことが多く、このようなエラーの原因となる。

NullPointerExceptionは、オブジェクトの生成忘れや戻り値の未確認、コレクション要素の存在確認不足など、条件分岐の不足によって発生することが多い。外部入力やデータベース取得結果など、nullが返される可能性がある処理では特に注意が必要である。また、複数のメソッド呼び出しを連鎖させるメソッドチェーンのような記述では、途中のいずれかが null であった場合にこの例外が発生する。

対処法としては、変数を使用する前に null でないことを確認する「nullチェック」が基本となり、Javaでは if ( obj != null ) のように記述する。あらかじめデフォルト値を設定しておいて null の代入を防ぐ仕組みも有効である。Java 8以降では「Optionalクラス」を用いて null を明示的に扱う手法も広まっている。KotlinSwiftのように、null安全を言語仕様として取り込んだ言語では、コンパイル時にnull参照を防ぐ仕組みが備わっている。

この記事の著者 : (株)インセプト IT用語辞典 e-Words 編集部
1997年8月より「IT用語辞典 e-Words」を執筆・編集しています。累計公開記事数は1万ページ以上、累計サイト訪問者数は1億人以上です。学術論文や官公庁の資料などへも多数の記事が引用・参照されています。