例外
デバッガでプログラムの実行の様子を見ていると、しばしば例外が発生していることが確認できます。
ある例外は意図的だったり、ある例外は極めて致命的なものであったり、さまざまな状態があります。 トラブルシューティングをするにあたり、例外の仕組みについて理解を深めておくことは重要です。
特に Windows の構造化例外処理 (SEH) 及び言語特有の例外処理の関係は重要です。
関連トピック
ファーストチャンス例外とセカンドチャンス例外
Windows の構造化例外処理では、別ページでも少し書いたように 例外が発生したときに、例外ディスパッチャによって例外ハンドラを探しはじめます。
デバッガがアタッチされている場合は、例外ハンドラ探しの前にデバッガに例外が発生されたことが通知されます。
それから例外ハンドラを探しはじめ、それが処理されなかった場合もう一度デバッガに通知されます。
前者をファーストチャンス例外 (first-chance exception)、後者をセカンドチャンス例外 (second-chance exception) といいます。 簡単に言い換えれば、ファーストチャンス例外はその後処理されることが期待できる例外であり、 セカンドチャンス例外はその後プログラムを止めてしまう例外といえます。
ですから、例えばプログラムがクラッシュ (異常終了) する現象を調査する場合、 ほとんどのケースで、ファーストチャンス例外よりセカンドチャンス例外に着目します。
なぜなら前述のように、その定義からファーストチャンス例外はその後処理されて無事に プログラムが続行可能である場合が多く、一方、セカンドチャンス例外ではプログラムがクラッシュする場合が多いからです。