NullPointerException例外 ---スマホ対応版--- | |
|
|
Javaプログラミングでエラーが発生したときの対処方法などを簡単な例で紹介しています。
|
|
NullPointerException
このページには、以下のサンプルを掲載しています。
下の項目をクリックをすると各サンプルにジャンプします。
※2週間以内の新着記事はNewアイコン、更新記事はUpアイコンが表示されます。
■NullPointerException ( Sample2_1.java )
[ 解説 ] このエラーもよく出るエラーのひとつです。このエラーは、空のオブジェクト変数にアクセスしたときに出力されます。 上記実行結果の青字部分は、発生した例外(エラー)で、赤字部分は、ソースコード上のエラー発生行になります。 ErrSample2_1.javaの7行目でエラーが発生しましたと言うことになります。 サンプルの場合、7行目でオブジェクト変数strの指す文字列の値が空かどうか判定しているのですが、strが空(null)の ためエラーが発生しています。 NullPointerExceptionの場合は、オブジェクトによって対処方法も異なります。下にあげる方法が必ずしも有効になるとは限りません。 あくまでも対処の一例として参考にしてください。 方法1 これは、文字列比較をする時に比較する文字列の片方が必ずnullでないと判っている場合に有効です。Sample2_1の場合、 オブジェクト変数strのequalsメソッドを使っていましたが、この例では、strをequalsメソッドの引数として与えています。 ""は、空の文字列を表しています。Javaでは、ダブルクォート(")で囲まれた部分は、文字列を表します。文字列は、Stringクラスの オブジェクトなので、当然Stringクラスのメソッドであるequalsが使えます。なので文字列比較の場合は、"固定文字列".equals(オブジェクト変数) の形にしてあげればたとえオブジェクト変数がnullであってもNullPointerExceptionを回避することが出来ます。 ただし、比較する文字列が両方ともオブジェクト変数で中身が実行時点でよくわからない場合は、この方法は使えません。
方法2 オブジェクト変数がnullだったらnullじゃないものに変更しちゃう。 ただし、エラーの回避は出来ますが、ロジック上正しいかどうかは別問題となります。
NullPointerExceptionは、よくでるエラーなのですが、エラーの中でもかなり厄介なエラーです。エラーを回避させる 事は、簡単に出来るのですが、それがロジック上正しいのかどうかは、よく吟味しないととんでもないエラーを引き起こします。 なかでも、一番厄介なのは、プログラムが正常に動作しているように見えるけど実はエラーというパターンです。 場当たり的なエラー回避を行っているとこのようなことが発生します。また、Javaでは、オブジェクトを数珠繋ぎにしたり 入れ子にして記述することがよくあるのですが、ここでNullPointerExceptionが発生すると原因の特定が難しくなります。 オブジェクトを数珠繋ぎに記述しないのもNullPointerExceptionを回避する有効な方法となります。 例えば下の場合
|
||||||
最終更新日:2019/02/13
2015-03-01からの訪問者数
3761 人 |