エラーが出た!どうしたらいいの?
せっかく書いたプログラムをいざ動かそうとしたら、エラーで動かなかったり、思った通りの動きをしなかったりで、どうしていいかわからなくなって慌ててしまったことはないですか?
初心者だけでなく、どんなベテランのエンジニアでも、プログラミングのエラーはつきものです。 なので、エラーを解決する方法を知り、うまく付き合っていくことが大事です。
今回はEclipseの機能を使って、効率よくエラーを解決するためのヒントを紹介します。
エラーには種類がある
ひとくちにエラーといっても、原因によって内容はさまざまで、大きく分けると3つあります。
- 文法エラー:プログラムにJava文法上の誤りがあり、コンパイルできない状態
- 実行時エラー:プログラム実行時に想定外のことが発生し、プログラムが途中で止まってしまう状態
- 論理エラー:プログラムは動いているが、想定した通りの結果にならない状態
文法エラー
文法エラーの場合は、エラーが発生しているプログラムの該当行に「×」と波線が表示されます。
該当行の「×」にマウスカーソルをあてると、エラーの内容が表示されます。「×」をクリックすると、エラーを解決する方法の候補となるリストが表示されるので、候補の中から選択するエラーの内容を確認し、文法上正しくなるようプログラムを修正します。
Eclipseでエラー解決のヒントを出してくれる機能は大変便利ですが、複数の候補がある場合に間違ったものを選ばないよう、きちんと理解した上で使うようにしましょう。
実行時エラー
プログラムを実行したときに想定外の事態が発生して処理が途中で止まってしまうエラーのことを実行時エラーと呼びます。また、その想定外の事態のことを「例外」と呼びます。
実行時エラーの場合は「〇〇Exception」という例外の種類や原因、例外が発生したプログラムの該当箇所がコンソールに表示されます。
下記の図の例だと、0で割り算をしたために、ArithmeticExceptionという例外が、Sampleクラスのmainメソッド(Sample.javaの8行目)で発生しています。
例外の場合は、文法エラーのようにエラー解決のヒントは出ないので、例外の内容をもとに、例外を発生させないようプログラムを修正するか、例外処理を実装します。
下記の図は、ArithmeticExceptionが発生した場合に「0で割り算できません。」というメッセージを出力する例外処理を実装した例です。
論理エラー
プログラムは動いているんだけど、想定通りの結果にならないことを論理エラーと言います。
論理エラーは、プログラムの記述ミスだけでなく、設計書通りに記述していない場合や、そもそも設計書が要件通りになっていない等、色々な原因がありますが、ここではプログラムの記述ミスを想定して話を進めます。
論理エラーの場合は、エラーがどこにも表示されないので、まず、どこが原因なのかを特定するところから調べないといけません。
このようなエラーは、デバッグ機能を使って、通過すべき処理を通っているか、変数の値に何が代入されているのか、といったことを調べながら原因を突き止めていく方法が有効です。
次回は、Eclipseのデバッグ機能の使い方についてお話します。