Java でのヌルポインタ例外とは
-
Java の
NullPointerException
とは何ですか -
Java で
NullPointerException
クラスを処理する -
Java で
NullPointerException
クラスを処理する -
Java のコマンドライン引数で
NullPointerException
と遭遇
このチュートリアルでは、Java null ポインター例外と、それを処理する方法を紹介します。フォローできるサンプルプログラムがいくつか含まれています。
Java では、参照変数のデフォルト値は、メモリ位置を指す null 値ですが、関連する値はありません。プログラマーがこの参照変数を使用して操作を実行しようとすると、null 条件のために null ポインター例外がスローされます。
これは、この例外が発生する可能性があるシナリオですが、この例外は Java で最も発生します。これにより、コードが破損し、異常な実行フローが発生します。次の点により、Java コードで NullPointerException
が発生する可能性があります。
- null オブジェクトのインスタンスメソッドを呼び出します。
- null オブジェクトのフィールドを変更します。
- null の長さを配列であるかのように扱います。
この例外を処理するために、Java は java.lang
パッケージにあるクラス NullPointerException
を提供します。catch
ブロックでこのクラスを使用して例外タイプを指定し、それをキャッチしてコードの中断を回避できます。
Java の NullPointerException
とは何ですか
NullPointerException
クラスを理解するための最も基本的な例は、string
オブジェクトを作成してから、toUpperCase()
のようなメソッドを適用して文字列を大文字に変換することです。以下の例を見て、string
オブジェクトが空であるために例外がスローされることに注意してください。
public class SimpleTesting {
static String str;
public static void main(String[] args) {
String newStr = str.toUpperCase();
System.out.println(newStr);
}
}
出力:
Exception in thread "main" java.lang.NullPointerException
Java で NullPointerException
クラスを処理する
例外を処理するために、Java は try-catch ブロックを提供します。ここでは、これらのブロックを使用して NullPointerException
をキャッチし、プログラムの異常終了を回避できます。以下の例を確認してください。
public class SimpleTesting {
static String str;
public static void main(String[] args) {
try {
String newStr = str.toUpperCase();
System.out.println(newStr);
} catch (NullPointerException e) {
System.out.println("Null Pointer: " + e.getMessage());
}
}
}
出力:
{One=1, Two=2, Three=3}
Java で NullPointerException
クラスを処理する
null 参照についてすでに知っている場合は、操作を適用する前に、if-else ブロックを使用して最初に変数を検証できます。この方法は優れたソリューションですが、以前に null 参照を知っている場合にのみ機能します。ここのコードを参照してください:
public class SimpleTesting {
static String str;
public static void main(String[] args) {
if (str != null) {
String newStr = str.toUpperCase();
System.out.println(newStr);
} else
System.out.println("String is null");
}
}
出力:
String is null
Java のコマンドライン引数で NullPointerException
と遭遇
これは、null ポインタ例外が発生する可能性がある別のシナリオです。main()
メソッドの args[]
配列にはコマンドライン引数が含まれており、実行時に引数が指定されていない場合、これは null 参照を指します。その長さを取得すると、NullPointerException
が返されます。以下の例を参照してください。
public class SimpleTesting {
static String[] arr;
public static void main(String[] args) {
int length = arr.length;
System.out.println("Array length : " + length);
}
}
出力:
Exception in thread "main" java.lang.NullPointerException