ホームページ  >  記事  >  Java  >  Java で NullPointerException はどのようなシナリオで発生しますか?

Java で NullPointerException はどのようなシナリオで発生しますか?

WBOY
WBOYオリジナル
2023-06-25 08:55:551640ブラウズ

Java は広く使用されているプログラミング言語ですが、NullPointerException はその例外の 1 つで、コード内に null ポインター参照があることを示します。コード内で null オブジェクトに対するメソッド呼び出しまたは null オブジェクトのプロパティへのアクセスがある場合、NullPointerException 例外がスローされます。この記事では、NullPointerException が発生するシナリオについて説明します。

1. オブジェクトが null の場合のメソッド呼び出し

オブジェクトが null の場合、そのオブジェクトに対してメソッドが呼び出されると、NullPointerException がスローされます。たとえば、次のコード スニペット:

String str = null;
System.out.println(str.length());

str が null であるため、str.length() ステートメントが実行されると、NullPointerException 例外がスローされます。この状況を回避するには、以下に示すように、メソッドを呼び出す前にオブジェクトを判断する必要があります:

String str = null;
if(str != null){
    System.out.println(str.length());
}

2. 配列が null の場合に配列操作を実行する

配列が null の場合、配列操作 (配列要素へのアクセス、配列の長さの評価など) が実行されると、NullPointerException もスローされます。たとえば、次のコード スニペットは次のとおりです。

int[] arr = null;
System.out.println(arr.length);

arr が null であるため、arr.length ステートメントが実行されると NullPointerException がスローされます。この状況を回避するには、以下のように配列要素にアクセスする前に配列を判定する必要があります:

int[] arr = null;
if(arr != null){
    System.out.println(arr.length);
}

3. try-catch

In try-catch で null ポインタ例外が発生します。 catch ブロックで NullPointerException が発生し、catch ブロックでの処理を行わずに null ポインター オブジェクトを直接使用した場合も、NullPointerException がスローされます。たとえば、次のコード スニペットは次のとおりです。

try {
    String str = null;
    System.out.println(str.length());
} catch (Exception e) {
    String errorMsg = e.getMessage();
    System.out.println(errorMsg.length());
}

try ブロックで null ポインタ例外が発生するため、catch ブロックの System.out.println(errorMsg.length()) ステートメントが実行されると、NullPointerException が発生します。例外がスローされます。以下に示すように、catch ブロックでエラー メッセージを判断できます:

try {
    String str = null;
    System.out.println(str.length());
} catch (Exception e) {
    String errorMsg = e.getMessage();
    if(errorMsg != null){
        System.out.println(errorMsg.length());
    }
}

4. 初期化されていないオブジェクトの使用

初期化されていないオブジェクトを操作すると、NullPointerException 例外もスローされます。たとえば、次のコード スニペットは次のとおりです。

String str;
System.out.println(str.length());

str が初期化されていないため、str.length() ステートメントの実行時に NullPointerException もスローされます。この状況を回避するには、以下に示すように、オブジェクトを使用する前に初期化する必要があります。

String str = "";
System.out.println(str.length());

概要:

NullPointerException 例外については、次の問題に注意する必要があります。上記のシナリオを実行し、コード内での null ポインター参照を回避するために、対応する処理を実行します。同時に、ツール クラス (apache-commons-lang3 ライブラリの StringUtils クラスなど) を使用して、null ポインター例外の発生を回避することもできます。

以上がJava で NullPointerException はどのようなシナリオで発生しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。