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