例外処理 (デバッグ)
このトピックの内容は、次の製品に該当します。
エディション |
Visual Basic |
C# |
F# |
C++ |
Web Developer |
---|---|---|---|---|---|
Express |
|||||
Pro、Premium、Ultimate |
例外は、プログラムの実行中に発生する異常状態です。 多くの場合、例外はデバッグを必要とする問題を示します。 例外が発生すると、General, Debugging, Options Dialog Box ダイアログ ボックスで無効にしていなければ、[出力] ウィンドウに例外メッセージが書き込まれます。
例外が発生したときに、実行を中断することも継続することもできます。
ASP.NET 以外で例外が発生し、処理されない場合、常に実行は中断されます。
エラー ハンドラーが呼び出される前に、例外が発生した直後に実行を中断するように、デバッガーを設定できます。 詳細については、「方法 : 例外がスローされたときに中断する」を参照してください。
「方法 : マイ コードのみにステップ インする」でデバッグしている場合、3 つ目の選択肢があります。 ユーザー コード ("マイ コード") のハンドラーで処理されない例外について、中断するようにデバッガーを設定できます。 詳細については、「方法 : ユーザーに処理されない例外で中断する」を参照してください。
ASP.NET には、トップレベルの例外ハンドラーが用意されています。例外を処理してブラウザーにエラー ページを表示できます。 このトップレベルの例外ハンドラーがあれば、処理されなかった例外がデバッガーに割り込むことを防ぐことができます (ただし、マイ コードのみが有効な場合は除きます)。 ASP.NET をデバッグする場合は、忘れずに [マイ コードのみ] を有効にしてください。
例外が発生し、まったく処理されない場合、デバッガーは常に中断します。 この操作は、[ユーザーにハンドルされていないとき] の設定に左右されません。
Visual Studio デバッガーでは、次のカテゴリの例外が認識されます。
C++ 例外
共通言語ランタイム例外
マネージ デバッグ アシスタント
ネイティブ ランタイム チェック
Win32 例外
ほとんどの例外には、例外が発生したときに反応するように設計されたハンドラーがあります。 これによって、正常ではない状況からプログラムを回復する機会ができます。 ネイティブ ランタイム チェックにはハンドラーはありません。
Visual Basic アプリケーションのデバッガーでは、すべてのエラーが例外として表されます。On Error 形式のエラー ハンドラーを使用している場合でもそうです。
Visual Basic と C# のデバッガーには、例外が発生したときにより詳細な情報を提供する 例外処理アシスタント という新機能が追加されました。
以下のトピックでは、例外処理について説明します。
-
注意
(Visual Basic と Visual C# のみ) 例外処理アシスタントが無効な状態で例外がキャッチされない場合、擬似変数 $exception が [ローカル] ウィンドウに追加されます。 この擬似変数を展開すると、例外に関する情報を見ることができます。