プログラム上においてエラーとしての認識がなされていない不正な処理ルーチンをバグと言う。また、OSの停止を伴うものはフォルトまたはストールと言う。OSが停止していない場合には、OS側が持つエラー処理ルーチンから排出するエラー情報からバグを見つけられることもある。またOSが停止してもコアダンプなどファイルの形で静的データが保存されている場合は、これを手掛かりとして異常を調査することも可能である。
通常のプログラム開発においては、こういったエラーはエラートラップ（エラー処理とも・後述）と呼ばれる特別の関数（サブルーチン）が処理を引き継ぐよう設計される。エラートラップに引っ掛かったエラーは、予測されるエラーに対して、どうすれば解決できるかを予測できる範疇で対応する。
エラートラップ.
エラートラップは、予測されるエラーに対して予め何らかの対抗策をプログラム中に組み込んでおくことである。例えば入力されたデータが異常であれば、プログラム利用者にデータの訂正を求めたり、あるいはデータそのものを処理できないものとして飛ばしてしまう（先送りや後回し）などである。
また、プログラムが複雑化してくると、こういったエラートラップで処理すべき原因が広範囲に及ぶため、特に対応せず処理続行不能としてプログラムを強制的に終了させてしまう場合もある。この場合は、問題となりうる部分のログ出力したり、あるいは寸前の問題なく動作していた時点の状態をセーブして、以前の状態を復旧させる場合もある。
最も単純な対応方法は「エラーが出たらプログラムを強制終了させてしまう」ことである。この方法であれば、最悪コンピュータシステム全体を巻き込んで動作停止する危険性だけは回避できる。ただしこの方法では途中までの処理が失われてしまうことから、プログラム利用者によっては、ストレスを受ける方法である。また、対処方法が明確ではないエラーメッセージも同様で、システムエラーの多くでは、専門の教育を受けたコンピュータ技術者以外には対処が難しいこともあり、同様に一般の利用者にはストレスを与える傾向がある。
エラーとユーザー.