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 zero3.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 34. ロジカルエラー (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)名の綴り間違いを確認してください。