コンピュータにおけるエラーとは、プログラムが自身の実行を正常な動作ではないと判断し、処理を中断または停止させる状態を指します。このエラーは、プログラムの文法的な誤り、与えられたデータの誤り、または
オペレーティングシステム(OS)や
コンピュータシステムがプログラムの要求に応じられない場合に発生します。
エラーの種類
エラーには、様々な種類があります。
プログラムの文法エラー: プログラムの記述自体に誤りがある場合。例えば、スペルミスや構文の誤りなどがあります。
データエラー: プログラムが処理するデータに誤りがある場合。例えば、数値データが文字列として入力されたり、範囲外の値が入力されたりした場合です。
システムエラー: OSやコンピュータシステム自体に問題がある場合。例えば、メモリ不足やハードウェアの故障などです。
バグとフォルト
プログラムにおいて、エラーとして認識されていない不正な処理ルーチンをバグと呼びます。また、OSの停止を伴うエラーはフォルトまたはストールと呼ばれます。OSが停止していない場合は、OSが持つエラー処理ルーチンから排出されるエラー情報からバグを発見できる場合があります。OSが停止した場合でも、コアダンプなどの静的データが保存されていれば、それを手がかりに異常を調査することが可能です。
エラートラップ(エラー処理)
通常のプログラム開発では、エラーが発生した場合に、エラートラップと呼ばれる特別な関数(サブ[[ルーチン]])が処理を引き継ぐように設計されます。エラートラップは、予測されるエラーに対して、どのように解決できるかを予測できる範囲で対応します。例えば、入力されたデータが異常な場合は、プログラム利用者にデータの訂正を求めたり、そのデータを処理せずに飛ばす(スキップする)などの対応を行います。
プログラムが複雑になるにつれて、エラートラップで処理すべき原因が広範囲に及ぶため、対応せずにプログラムを強制的に終了させてしまう場合もあります。この場合、問題となりうる部分のログを出力したり、寸前の正常な状態をセーブして以前の状態に復旧させることがあります。
最も単純な対応方法は、「エラーが出たらプログラムを強制終了させる」ことです。これにより、最悪の場合でもコンピュータシステム全体が停止する危険性は回避できますが、途中までの処理が失われてしまうため、ユーザーにとってはストレスとなる可能性があります。
エラーメッセージとユーザー
パーソナルコンピュータが普及した現代社会では、ユーザーは高度化されたOSやアプリケーションソフトウェアを利用しています。これらのソフトウェアは、デバイスドライバなど様々なプログラムが介在して動作しており、コンピュータのメインシステムは、その内外とひっきりなしに通信を行っています。ユーザーが直接目にしているのは、アプリケーションソフトウェアのグラフィカルユーザーインターフェース(GUI)ですが、エラーが表示された場合、ユーザーにとっては「コンピュータのどこかに異常がある」という認識しかありません。
エラートラップが適切に機能し、問題箇所を的確に指示してくれる場合は、ユーザーは対応できますが、エラーメッセージが分かりにくい場合は、パニックになる可能性があります。代表的な「不親切なエラーメッセージ」としては、ブルースクリーンが挙げられます。これは、末端のユーザーにとっては「これが出たらコンピュータの電源を切る」というレベルでしか認識されていません。
また、フロッピーディスクを挿入したまま再起動した際に出る「Invalid system disk」というエラーメッセージも、英語や技術に知識がないと理解が難しいものです。これはコンピュータのハードウェアを司る基本プログラムであるBIOSが出すエラーメッセージですが、Windows 95の普及以降には、いわゆる「Any keyを探す」という混乱も発生しました。
まとめ
コンピュータにおけるエラーは、プログラムの実行を妨げる様々な要因によって発生します。エラーを適切に処理し、ユーザーに分かりやすいメッセージを表示することで、ユーザーはより快適にコンピュータを利用することができます。エラー処理は、プログラム開発において非常に重要な要素であり、常に考慮する必要があります。
脚注
例外処理: エラー発生時にプログラムが正常に動作を継続するための技術
ヒューマンエラー: 人間の操作ミスによるエラー
故障: ハードウェアの不具合によるエラー
フォールト (技術用語): システムの欠陥や不具合
エラー忘却型コンピューティング: エラーを無視して処理を継続するコンピューティング
*
エラーページ: ウェブサイトのエラーを表示するページ