MENU

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

tggaa478@yahoo.co.jp

一つ前のページでは配列について学習しました。

今回は エラーメッセージ について見ていきましょう。

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)でよく見られるエラーです。

浮動小数点型(doublefloat)でのゼロ除算は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);
    }
}

練習問題の解答と解説

この問題の正解コードとその解説は以下の通りです。

クリックして開いて確認してください。

Q
正解コード
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を引き起こします。
    }
}
Q
正解コードの解説

非常にシンプルなコードのため解説はありません。

難しいと感じる方は上記の用語の説明を見返してみてください。

もっと分かりやすい学習サイトにするために

この記事を読んで「ここが分かりにくかった」「ここが難しかった」等の意見を募集しています。

世界一わかりやすいJava学習サイトにするため、ぜひ 問い合わせフォーム からご意見下さい。

<<前のページ

学習記事一覧

次のページ>>

記事URLをコピーしました