#プログラミング勉強日記
2021年1月23日
Javaでコードを書いているときに、よく出てくるNullPointerExcptionの意味と、NullPointerExcptionにならないようにする方法をまとめる。
Request processing failed; nested exception is java.lang.NullPointerException
#NullPointerExceptionとは
参照型の変数の値にnullが格納されているとき、それを参照しようとしたときには発生する例外である。
NullPointerException(ナル・ポインタ・エクセプション、ヌル-)は、プログラミング言語Javaにおける例外の一つである。
null値(定義されていない値)の参照型変数を参照しようとした時に発生する。NullPointerExceptionは実行時例外と呼ばれるjava.lang.RuntimeException クラスのサブクラスであるため、try-catch節による例外処理を書かなくてもコンパイルエラーは発生しない。
(引用:https://ja.wikipedia.org/wiki/NullPointerException)
なので、以下のようなコードだとNullPointerExcptionが発生する。
class Sample{
public static void main(String[] args) {
Integer i = null;
i.toString();
}
}
#NullPointerExcptionを避ける方法
基本的には、参照型変数がnullかどうか判定すればいい。
先ほどのコードではNullPointerExcptionが発生したが、参照型変数がnullの場合は処理をしないというコードに書きかえることでNullPointerExcptionをなくせる。
class Sample{
public static void main(String[] args) {
Integer i = null;
// i がnullの場合、処理をしない
if(i == null) {
return;
}
i.toString();
}
}
しかし、コード量が増えるほど判定は大変になるので対策方法を示す。
- null以外の値で変数を初期化する
- 配列は空で初期化する
- 戻り値にnullを返さない
この3つを意識することで、NullPointerExcptionが発生しにくくなると思う。