Java 速習チュートリアル

Java のエラー

1. Javaのエラーとは?

経験豊富なJavaデベロッパーであっても、ミス(Mistake)は避けて通れません。重要なのは、エラーをいかに迅速に特定(Spot)し、修正(Fix)するかを学ぶことです。

このセクションでは、Javaで頻繁に遭遇するエラーと、デバッグ(Debugging)に役立つヒントを解説します。何が問題で、どう直すべきかを理解していきましょう。

1.1 Javaにおけるエラーの分類

Javaのエラーは、大きく以下の3つのタイプに分けられます。

エラーのタイプ説明
コンパイルエラー (Compile-Time Error)コンパイラによって検出されます。コードの実行そのものを防ぎます。
ランタイムエラー (Runtime Error)プログラムの実行中に発生します。多くの場合、クラッシュ(Crash)の原因となります。
ロジカルエラー (Logical Error)コードは実行されますが、期待した結果が得られません。最も見つけるのが困難なエラーです。

2. 一般的なコンパイルエラー

コンパイルエラーは、シンタックス(文法)の間違いや型(Type)の不整合により、プログラムがビルド(Build)できないときに発生します。

以下に代表的な例を挙げます。

2.1 セミコロンの欠落

int x = 5 // セミコロンがない
System.out.println(x);

結果:

error: ';' expected

       ヒント: Javaでは、すべてのステートメント(Statement)の末尾にセミコロン(;)が必要です。

2.2 未宣言の変数 (Undeclared Variables)

System.out.println(myVar); // myVarが定義されていない

結果:

cannot find symbol
symbol: variable myVar

       ヒント: バリアブル(Variable / 変数)を使用する前に、必ず宣言(int myVar = 50; など)を行う必要があります。

2.3 型の不一致 (Mismatched Types)

int x = "Hello"; // int型にStringを代入しようとしている

結果:

incompatible types: String cannot be converted to int

       ヒント: 代入する値が、バリアブル(Variable)の型と一致しているか確認してください。

3. 一般的なランタイムエラー

ランタイムエラーは、プログラムのコンパイルには成功するものの、実行中にクラッシュしたり予期せぬ動作をしたりするエラーです。

3.1 ゼロ除算 (Division by Zero)

int x = 10;
int y = 0;
int result = x / y; // 0で割ることはできない
System.out.println(result);

結果:

Exception in thread "main" java.lang.ArithmeticException: / by zero

3.2 配列のインデックス範囲外 (Array Index Out of Bounds)

int[] numbers = {1, 2, 3};
System.out.println(numbers[8]); // インデックス8は存在しない

結果:

Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: Index 8 out of bounds for length 3

4. ロジカルエラー (Logical Errors)

ロジカルエラーは、コードは正常に実行されるものの、計算結果や挙動が開発者の意図と異なる場合に発生します。

例:

int x = 10;
int y = 2;
int sum = x - y; // 本来は足し算をしたかったが、引き算になっている
System.out.println("x + y = " + sum);

実行結果:

x + y = 8
  • 期待される結果: 12
  • ロジカルエラーの原因: 加算すべきところで、誤って減算(Subtract)を行っている。

       ヒント: ロジックの欠陥を見つけるには、さまざまな入力値でテスト(Test)を行ってください。これは次章で詳しく学ぶデバッグ(Debugging)の重要なプロセスです。

5. エラーを回避するための良い習慣

エラーを減らし、開発効率を上げるためのプラクティスを紹介します。

  • 意味のあるバリアブル名(Variable Name)を付ける: a, b ではなく userName, totalPrice など。
  • エラーメッセージを注意深く読む: どのファイル、どの行(Line)でエラーが起きているかを確認しましょう。
  • セミコロンや波括弧(Braces)のチェック: 構文ミスがないか常に意識します。
  • タイポ(Typo)に注意: バリアブル名やメソッド(Method)名の綴り間違いを確認してください。