java.lang.NullPointerException(NPE)に気づきましたか? JavaでランタイムNPEを回避するための8つのベストプラクティス

公開: 2020-10-07
java.lang.NullPointerException(NPE)に気づきましたか? JavaでランタイムNPEを回避するための8つのベストプラクティス

JavaおよびJavaでのNullPointerExceptionの回避JavaでNullPointerExceptionを回避するためのヒントとベストプラクティス。

Java開発者として、あなたは1日目からNull Pointer Exception(NPE)に直面したに違いありません。 ほとんどの場合、NPE例外は、同じ原因を特定する明確なスタックトレースを示しますが、数百のクラスがある大規模なエンタープライズレベルのアプリケーションの場合、実際の根本原因を見つけるのは悪夢になります。

Null Pointer Exception(NPE)とは何ですか?

NullPointerException (NPE)は、オブジェクトを参照しているかのように、メモリ内の場所がない(null)参照を使用しようとしたときに発生する例外です。

null参照でメソッドを呼び出すか、 null参照のフィールドにアクセスしようとすると、NPEがトリガーされます。 これが最も一般的な原因です。

JavaDocによると、NPEの主な原因は次のとおりです。

  • Throwable値であるかのようにnullをスローします。
  • nullオブジェクトのインスタンスメソッドを呼び出します。
  • nullオブジェクトのフィールドへのアクセスまたは変更。
  • nullの長さを配列であるかのように取ります。
  • nullのスロットにアクセスするか、配列であるかのように変更します。

さて、本当の問題は、実行時にjava.lang.NullPointerExceptionを回避する方法ですか? このチュートリアルでは、実行時にNPEを作成するいくつかの例と、これを解決するために実行する必要のある手順を見ていきます。

実行時1日にNPEを作成しましょう。 以下の例CrunchifyNullPointerExceptionTips.javaを見てください

NPEを3つの異なる方法で作成します

  1. nullオブジェクトにアクセスしようとすると、NPEがスローされます
  2. null文字列を変換しようとすると、NPEがスローされます
  3. クラスの初期化中にnullオブジェクトにアクセスしようとすると、NPEがスローされます

クラスCrunchifyNullPointerExceptionTips.javaを作成します

結果:

実行時にNullPointerExceptionを回避するために使用できるヒントとコツはいくつかあります。 見てみましょう。

ヒント1:

Eclipse / IntelliJ IDEは、ワークスペースにNPEを表示しようとします。 開発中にのみコードを修正してください。

EclipseのNullポインタヒント

ヒント2:

オブジェクトsNullorEmpty crunchifyI ()チェックを追加します。 これをCrunchifyNullPointerExceptionTips.javaに追加します

上記のJavaプログラムでは、55行目と56行目がこれに置き換えられます。

ヒント3:

Trim()操作後、Stringがnull空かどうかを確認します。

ヒント4:

ランタイムプロセスが中断されないようにするには、常にTry Catch blockを使用してください。

ヒント5:

ジェネリックスの処理が優れているため、 Collections.emptyList()が推奨されます。

ヒント6:

Java Assertionsを使用する

アサーションは、コードに関する仮定をテストできるようにするステートメントです。 たとえば、システムで名前を返すメソッドを作成する場合、Stringがnullの場合にotherNameを返すことを表明できます。

アサーションの基本的な使用法は次のとおりです。

ただし、落とし穴があります。アサーションは実稼働環境では使用できないため、ビジネスロジックでアサーションを使用しないでください。

ヒント7:

containsKey()containsValue()contains()チェックを使用してみてください。

ヒント8:

結論として、実行時に本番環境でデバッグするのではなく、開発中にNPEを処理することをお勧めします。 Spring Frameworkアノテーション、 Factory Pattern 、ヌルオブジェクトパターンなどを使用して利用できるヒントやコツは他にもたくさんあります。しかし、ここではこれを短くします。

これについては、おそらく1週間以内に新しいチュートリアルを公開する予定です。 乞うご期待。

このチュートリアルに何かを追加したい場合、または問題を見つけた場合は、チャイムを鳴らしてコメントを入力してください。