NullPointerException 単語


ニコニコ動画でNullPointe…の動画を見に行く

ヌルポインタエクセプション

2.2千文字の記事

NullPointerExceptionとは、ぬるぽである。ガッ。

 

もとい、Javaの代表的な実行時例外のひとつ。NPEと略される。
ぬるぽ

ようこそJavaの世界へ

NullPointerExceptionは、Java世界入門した人間が最初に出会う例外、そして生涯付き合うことになる例外である。NullPointerExceptionをcatchしようなんて思っちゃダメだぞ。

 java.lang.Object
+- java.lang.Throwable
+- java.lang.Exception
+- java.lang.RuntimeException
+- java.lang.NullPointerException

値がnullである参照変数に対して、メソッド呼び出しやフィールドアクセスをしたときなどに発生する実行時例外である。

導入されたバージョンJDK 1.0.

要するに、なんなの?

ポインタとして見たとき

プログラムは、処理をするために数値を保存しておくを持っている。→変数

そのは全てPCの中のどこに置いてあるかを表す住所をもっているが、その住所も数値なのでまた別のに入れて置くことができる。Aという住所がBというの中に入れられている時、「Bは、Aをポインタである」と言う。

ここでもしBの中に何の数値も入っていないのに(→null)Bをポインタとして扱おうとしたら、Bはどの住所していないことになるので、エラーが起きる。これがNullPointerException、すなわちNull(数値がない)Pointer(ポインタの)Exceptionエラー)なのである。

Exceptionは厳密にはエラーイコールではないが、説明が長くなるので後述。

どれでもありながらどれでもないnull(オブジェクトの視点から)

Javaがあっていなければコンパイルすることすらできないが、があってさえいればそれなりに動く「安全」が言語仕様としての特長の一つである。

ところでnullはどうであろうか。nullはすべてのクラスインスタンスとして代入に使用できる。しかし、nullは一切メソッドを持たないのでいかなるクラスの要件も満たしていない。すなわちnullは「どれでもありながらどれでもないオブジェクト」ということができ、この性質がエラーの原因でもある。

 nullはすべてのに値として代入されコンパイルを通ってしまうが、一方でどんなメソッドを呼び出しても動作しない。安全の例外がnullなのである。

Javaにおける例外処理について

Javaでは、例外をクラスインスタンスとして定する。例外に用いることができるクラスは、java.lang.Throwableおよびそのサブクラスに限られる。

Javaでは、例外は大きく分けて3種類ある。

さらば、NullPointerException

Javaの言語仕様に深く根ざした問題であり続けたNullPointerExceptionであったが、2014年Java8にOptionalクラスが導入されてからは解決の糸口が見えつつある。nullが入りうるところにはOptionalで包んだ値を用い、Optionalから値を取り出すときにnullへの対応を強制することで安全性を取り戻したのだ。

もっとも、互換性の関係から過去ライブラリ資産へのOptionalクラス導入は進んでおらず、本当に解決されるのは遠い未来のことであるようにも思える。

関連項目

この記事を編集する
関連記事

親記事

子記事

  • なし

兄弟記事

  • なし

掲示板

おすすめトレンド

ニコニ広告で宣伝された記事

記事と一緒に動画もおすすめ!
東方Project[単語]

提供: おさゆく大好き

もっと見る

急上昇ワード改

最終更新:2025/12/06(土) 02:00

ほめられた記事

最終更新:2025/12/06(土) 02:00

ウォッチリストに追加しました!

すでにウォッチリストに
入っています。

OK

追加に失敗しました。

OK

追加にはログインが必要です。

           

ほめた!

すでにほめています。

すでにほめています。

ほめるを取消しました。

OK

ほめるに失敗しました。

OK

ほめるの取消しに失敗しました。

OK

ほめるにはログインが必要です。

タグ編集にはログインが必要です。

タグ編集には利用規約の同意が必要です。

TOP