Thinkers'Studio
JavaとC言語の自習ツール
エラー処理の重要性

 「画面でたくさん入力したんだけど、入力ミスがあったらしくて全部消えてなくなっちゃったよ。エラー報告も出なかった!」
 そんなプログラムでは使いものになりませんね。 今回は、実行時のエラー処理、特に入力データに関わるエラーのお話です。

入力データに関わるエラー

 たとえ正常なケースで正しく動作しても、間違った入力への対応が不十分では、プログラムとしての役割が果たせません。 いろいろな場合を想定し、それぞれに正しい対応が必要です。
 対処が難しい場合は制約とすることもありますが、その場合でもプログラムが暴走したり異常終了するような事態は避けなければなりません。異常を検出して報告し、再入力を求めたり、エラーで終了させるなど、適切な対応が必要です。
 このような対応はエラー処理とかエラー・ハンドリングと呼ばれ、信頼性の高いプログラムを作るために、とても大切です。
 Java や C++ などでは「例外処理」として、実行中に発生した例外を処理する仕組みが用意されていますが、これはエラー処理をしやすくするための仕組みです。 重要なのは、エラーの見つけ方や対処をよく考えることです。 それが品質の高いプログラムにつながります。

エラーケースと考えられる例

  • 求めているデータと異なる種類のデータが指定された(数値に対して文字 など)
  • 範囲外の値が指定された
  • 指定されたファイルをオープンできない
  • ファイルから読もうとしたが読めない
  • ファイルに書き出そうとしたが書けない
  • 存在しない配列要素にアクセスしようとした

エラー処理ではどんなことをする?

  • エラーが起こったことがよく分かるように知らせる
  • 原因と考えられることをできるだけ具体的に知らせる
  • 対応が必要なことがあれば知らせる
  • 必要に応じて、エラーログなどの情報を残す
    (あとで追跡や原因究明に使用するため)
  • 必要に応じて、エラーが発生したモジュール名などの情報も含める
    (モジュールが階層化されている場合など)
 エラーメッセージは、それを見るのが誰かによって表現や内容が違ってきます。 場合によっては対処方法を示すこともあります。 その一方で、エラーの原因がよほど明白でない限り、異常な点の報告にとどめないと、訳の分からないメッセージになる危険を伴います。