【Java】java.lang.NullPointerException
開発をしていて起きた例外とその対策を記載します。
今回は「NullPointerException」について記載します。
NullPointerExceptionって何?
NullPointerExceptionをはじめて見て戸惑っている方、何故起きているのか分からない方もいると思いますので説明をしますと
NullPointerException(ナル・ポインタ・エクセプション、ヌル-)は、プログラミング言語Javaにおける例外の一つである。
null値(定義されていない値)の参照型変数を参照しようとした時に発生する。NullPointerExceptionは実行時例外と呼ばれるjava.lang.RuntimeException クラスのサブクラスであるため、try-catch節による例外処理を書かなくてもコンパイルエラーは発生しない。
引用:Wikipedia
ということです。
▼「null値を参照すると起きる例外」ということ。
Springというフレームワークで開発を行っている場合、NullPointerExceptionが発生するとこんな感じに表示される。
HTTPステータス 500 – Request processing failed; nested exception is java.lang.NullPointerException
対策は?
さきほど、「null値を参照すると起きる例外」と書きました。
なのでnull値を参照しないようなロジックを入れることで対策できます。
サンプルコード
以下をメモ帳やエディタにコピペしてください。
まずはNullPointerExceptionを出します。
class Sample{ public static void main(String[] args) { Integer i = null; i.toString(); } }
実行してみると…はい、NullPointerExceptionが出ましたね。
以下に書き換えてみる。
「nullの場合は処理しない」というロジックを追加しました。
class Sample{ public static void main(String[] args) { Integer i = null; // i がnullの場合、処理をしない if(i == null){ return; } i.toString(); } }
で、実行すると…
NullPointerExceptionがでなくなりました。
おまけ
「NullPointerException」を略して「ぬるぽ」ということもある。
某匿名掲示板のプログラマー板が発祥(らしい)。
また、nullは「ヌル」ではなく「ナル」が正しい。(が、実際「ナル」とよんでいる人は見たことがない…)
まとめ
・NullPointerExceptionはnull値を参照すると起きる例外
・null値を参照しないようなロジックを入れることで対策できる
・nullは「ヌル」ではなく「ナル」が正しい
今回は初心者でも上級者でもよく見る例外(であろう)NullPointerExceptionを紹介しました。
最初見たときは、「あ、これが噂のぬるぽかー」と思ったのを今でも覚えています。
例外を一回も出さず開発を行うのは無理なので、うまく付き合って解決していきたいものです。