【Java】レッスン2-08:よくあるエラーメッセージと原因・解決方法を学ぼう

一つ前のページでは配列について学習しました。
今回は エラーメッセージ について見ていきましょう。
Lesson1:基礎文法編
Lesson2:制御構造編
・Lesson2-1:比較演算子と論理演算子を理解しよう
・Lesson2-2:if文による分岐処理を理解しよう
・Lesson2-3:switch文による分岐処理を理解しよう
・Lesson2-4:for文による繰り返し処理を理解しよう
・Lesson2-5:while文による繰り返し処理を理解しよう
・Lesson2-6:繰り返しを制御しよう
・Lesson2-7:配列を理解しよう
・Lesson2-8:エラーメッセージを読めるようになろう ◁今回はココ
・Lesson2-9:例外処理を理解しよう
・確認問題2-☆1:ハイアンドロー ゲームを作ろう
・確認問題2-☆2:数字当てゲームを作ろう
・確認問題2-☆3:じゃんけんゲームを作ろう
Lesson3:メソッド編
Lesson4:コレクション編
Lesson5:クラス編
Javaエラーメッセージの基本とは?初心者がつまずく5大例外を解説

Javaプログラムを実行する際に、プログラムが意図した通りに動作しなかったり、実行が中断される場合、エラーメッセージが表示されます。
エラーメッセージは問題の原因を示す重要な手がかりです。
初心者の段階ではエラーメッセージの内容に戸惑うことも多いですが、よくあるエラーメッセージの原因を理解することで、エラーへの対処がしやすくなります。
以下に、代表的なエラーメッセージを5つ紹介します。
Cannot find symbolとは?未定義シンボルに注意
このエラーメッセージは、変数やメソッド、クラスの名前がJavaで認識できない場合に表示されます。
主な原因としては、スペルミス、変数やメソッドの宣言が漏れている、または適切なインポートが行われていないことが挙げられます。
例えば変数名を「count」と宣言していたのに「cunt」として使用すると、このエラーが発生します。
int count = 5; System.out.println(cunt); // Cannot find symbolエラー
NullPointerExceptionの原因と防ぐ方法
このエラーはnullの値を持つオブジェクトを操作しようとした際に発生します。
nullとは何も参照していない状態を意味します。
例えばオブジェクトを初期化せずにメソッドを呼び出そうとした場合や、配列の要素がnull(空)のままでアクセスしようとした場合に発生します。
String text = null; System.out.println(text.length()); // NullPointerExceptionエラー
ArrayIndexOutOfBoundsExceptionとは?配列の範囲チェックが鍵
配列の要素にアクセスする際、指定したインデックスが配列の範囲外である場合に表示されるエラーメッセージです。
例えば5つの要素を持つ配列に対してインデックス6でアクセスしようとすると、このエラーが発生します。
int[] numbers = {1, 2, 3, 4, 5}; System.out.println(numbers[5]); // ArrayIndexOutOfBoundsExceptionエラー
ArithmeticExceptionとは?ゼロ除算の落とし穴
算術演算の途中でエラーが発生した場合に表示されます。特に整数型のゼロ除算(10 / 0
)でよく見られるエラーです。
浮動小数点型(double
やfloat
)でのゼロ除算はInfinityやNaN(Not a Number)として処理されますが、整数型ではエラーになります。
int result = 10 / 0; // ArithmeticExceptionエラー
ClassNotFoundExceptionの対処法|クラスパスと依存ライブラリの確認法
実行時に指定したクラスが見つからない場合に発生するエラーです。
クラスパス(Javaがクラスファイルを探す場所)が正しく設定されていない場合や、指定したクラスファイルが存在しない場合に見られます。
特に外部のライブラリを利用する際に設定ミスがあると、このエラーが表示されることがあります。
// エラー例 java.lang.ClassNotFoundException: com.example.MyClass
以上がJavaのプログラミングにおいて初心者が頻繁に遭遇するエラーメッセージとその原因の解説です。
エラーメッセージの内容を読み解き、原因に注目することで、問題の特定と解決がしやすくなるでしょう。
練習問題|Javaのエラーを見てバグを特定・修正してみよう

以下のコードをコピーして実行してみましょう。
そうすると複数のエラーが発生しますので、表示されるエラーメッセージを参考にしてエラー箇所を特定し、正しいコードを書きましょう。
public class ErrorExamples { public static void main(String[] args) { System.out.println(count); String text = null; System.out.println(text.length()); int[] numbers = {1, 2, 3}; System.out.println(numbers[ 3]); int a = 10; int b = 0; int result = a / b; System.out.println(result); } }
練習問題の解答と解説
この問題の正解コードとその解説は以下の通りです。
クリックして開いて確認してください。
- 正解コード
-
public class ErrorExamples { public static void main(String[] args) { // 1. Cannot find symbol エラー String count = "Cannot find symbolエラー"; System.out.println(count); // 解説:count変数は宣言されていなかった、Cannot find symbolエラーが発生しました。 // 2. NullPointerException エラー String text = "NullPointerException エラー"; System.out.println(text.length()); // 解説:textがnullだったので、そのメソッドlength()を呼び出すとエラーが発生しました。 // 3. ArrayIndexOutOfBoundsException エラー int[] numbers = {1, 2, 3}; System.out.println(numbers[ 2]); // 解説:配列numbersのインデックスは0から2までしかないため、3番目にアクセスするとエラーになりました。 // 4. ArithmeticException エラー int a = 10; int b = 1; int result = a / b; System.out.println(result); // 解説:整数のゼロ除算はArithmeticExceptionを引き起こします。 } }
- 正解コードの解説
-
非常にシンプルなコードのため解説はありません。
難しいと感じる方は上記の用語の説明を見返してみてください。