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

オブジェクト指向言語では、変数はデータそのものではなく、データが格納された場所を指し示す「参照」(reference)を保持している。変数に何も割り当てられていない状態では、参照先が存在しないことを示す特別な値として「null」(ヌル/ナル)が用いられる。
この状態の変数に対してメソッドの呼び出しやプロパティへのアクセスを試みると、参照先が存在しないためプログラムは処理を続けることができず、NullPointerExceptionを送出して停止する。値型と異なり、参照型では存在しない対象に対する操作が実行時まで検出されないことが多く、このようなエラーの原因となる。
NullPointerExceptionは、オブジェクトの生成忘れや戻り値の未確認、コレクション要素の存在確認不足など、条件分岐の不足によって発生することが多い。外部入力やデータベース取得結果など、nullが返される可能性がある処理では特に注意が必要である。また、複数のメソッド呼び出しを連鎖させるメソッドチェーンのような記述では、途中のいずれかが null であった場合にこの例外が発生する。
対処法としては、変数を使用する前に null でないことを確認する「nullチェック」が基本となり、Javaでは if ( obj != null ) のように記述する。あらかじめデフォルト値を設定しておいて null の代入を防ぐ仕組みも有効である。Java 8以降では「Optionalクラス」を用いて null を明示的に扱う手法も広まっている。KotlinやSwiftのように、null安全を言語仕様として取り込んだ言語では、コンパイル時にnull参照を防ぐ仕組みが備わっている。