Null Pointer Exceptonとは
はじめまして。
haruki_ueharaです。
本日からブログを始めます。
初心者向けの記事にしていこうと考えています。
何故かというと私が初心者なので・・・
言語は主にC#メインで、
勉強したことを含め、
その他興味のある技術のことなどを綴っていきます。
不定期更新ですが、よろしくお願いします。
ブログのタイトルである
「Null Pointer Excepton」
は、実はjavaで扱われているエラーの名称です。
どんなエラーかと言いますと・・・(イメージなので抽象的な内容です)
Aくんはその日、誕生日でした。
家族で楽しく誕生日パーティ。
両親から箱に入った誕生日プレゼントを貰いました。
どんなプレゼントかワクワクしながら箱を開けてみると、
なんと中身は空っぽだったのです。
この両親から軽くイジメを受けたAくんは
「Null Pointer Excepton!!!!」
と叫び、驚きからか気絶してしまいます。
誕生日という型でプレゼントという箱の中身を参照しようとしたとき、
当然ならあるはずのプレゼントが入っていない。
このように、Aくんがプレゼントの中身を見るというプログラムが動いている最中に、
予期せぬ想定外のエラーが発生することを、「例外」といいます。
例外が発生すると気絶したAくんのようにプログラムがそこで終了してしまい
それ以降処理してくれません。 「落ちる」という状態です。
そんなことあってはならないのです。
※厳密に言うとNullは空という意味ではありません。
NullはNullでありNull以外の何者でもないのです。
さて、ショックのあまり突然Aくんが気絶し、プログラム上では「落ちる」ことになったとき、どうすれば良かったのでしょう。
当然回避する方法はあります。
それは
try〜catch
です。
どう使うかといいますと…
まず事前準備として、何も入ってない誕生日プレゼントをAくんに渡したらどういう反応をするだろう。ショックで気絶するかも…
と考えるところから始まります。
父親が言います。
「じゃあ、もしAが気絶したら僕が倒れる前に受け止めてやるからちょっくら試してみよう。」
try{
Aくんに空の誕プレの箱を渡す
}
catch(気絶){
Aくんを受け止めて
気絶したことを家族に伝える
}
tryが例外の発生する可能性のある動き(処理)で catchはもし、例外(気絶)が発生したらそれを受け止め、どんな状態なのかを伝えることなどができます。
これで大混乱の強制終了という事態は免れる訳です。
他にもfinallyという、catchした後に必ず実行できる処理もあれば、
誕プレの箱の中身が入っているか入っていないかの2択であれば、
ifという条件分岐を使って処理することもできます。
かなり余談が多くなりました。
あくまで全て一例とイメージです。
ニュアンスであることをお許しください。
話を戻しますと
ネット用語では俗に「ぬるぽ」と言われています。
意味を成さない、などの意味です。
C#ですと正しくは
「Null Reference Exception」
です。
意味はjavaと全く同じです。
前者の方が知名度が高い?のでタイトルに採用しました。
タイトルはぬるぽですが、
ぬるぽとは言わせないブログを目指す意味を込めて命名しています。
これから何卒、よろしくお願いします!