コンピューティングとオペレーティングシステムにおいて、トラップ(例外あるいはフォールトとしても知られる)は、一般的に [NB 1] [1] 例外的な状況によって引き起こされる同期割り込みの一種である(例えば、ブレークポイント、ゼロ除算、無効なメモリアクセス)。
通常、トラップの発生は、カーネルモードへ切り替わるという結果になる。切り替わる箇所は、元のプロセスに制御を戻す前にオペレーティングシステムがいくつかの行動を実行するところである。 カーネルプロセス内のトラップは、ユーザープロセス内のトラップよりもさらに深刻である。いくつかのシステムにおいて、致命的である。 いくつかの用途において、トラップという用語は、プロファイラあるいはデバッガへのコンテキストスイッチの開始を意図する割り込みを特別に指している。 [2]
元の用途から派生して、トラップは、いくつかの分野において通常の制御構造を横取りする仕組みを意味することがたまにある。 [3]
SNMPにおいて、トラップは、管理されたサブシステムに関する警報あるいは他の非同期イベントを報告するために使われるPDUの一種である。
割り込みの概念は、長年に渡って範囲を拡大してきた。80x86ファミリーは、int 命令(ソフトウェア割り込み)の導入によって割り込み関連の混乱を増やすだけであった。実際に異なる複数のメーカーは、この章で論じている事柄を記述するために例外、フォールト、アボート、トラップ、そして割り込みのような用語を使ってきた。不幸なことにこれらの用語の正確な意味についての明確な合意はとれていない。異なる執筆者たちは、自分の都合に合わせて異なる複数の用語を採用する。議論のためにそのような誤用された用語の使用を完全に避けたいと思う限り、この章で使用できる明確に定義された用語の集合を決めておくことは素晴らしいことである。それゆえに割り込み、トラップ、そして例外という3つの用語を選んでそれらを定義した。この章は、これらの用語に対する最も一般的な意味を使用しようと試みている。しかし、異なる文脈でそれらの用語を使用する他の教本を見つけても驚くことではない。