例外ヘルパーを使用して例外を検査する
例外に対処することは、テクノロジや専門知識のレベルに関係なく、一般的な問題です。 例外がコードで問題を引き起こしている理由を把握するのは、イライラする経験になる可能性があります。 Visual Studio で例外をデバッグする場合は、問題をより迅速にデバッグできるように、関連する例外情報を提供することで、そのフラストレーションを軽減したいと考えています。
例外時に一時停止する
デバッガーが例外で中断すると、そのコード行の右側に例外エラー アイコンが表示されます。 非モーダル例外ヘルパーが例外アイコンの近くに表示されます。
コード行する
例外情報を検査する
例外ヘルパーで例外の種類と例外メッセージをすぐに読み取ることができ、例外がスローされたか、ハンドルされなかったかを確認できます。 [詳細の表示] リンクをクリックすると、Exception オブジェクトのプロパティを調べて表示できます。
null 参照を分析する
Visual Studio 2017 以降では、.NET コードと C/C++ コードの両方で、NullReferenceException
または AccessViolation
にヒットすると、例外ヘルパーに null 分析情報が表示されます。 分析は、例外メッセージの下にテキストとして表示されます。 次の図では、情報は "s が null でした" と表示されています。
手記
マネージド コードでの Null 参照分析には、.NET バージョン 4.6.2 が必要です。 現在、ユニバーサル Windows プラットフォーム (UWP) やその他の .NET Core アプリケーションでは、Null 分析はサポートされていません。 Just-In-Time (JIT) コードの最適化がないコードのデバッグ中にのみ使用できます。
例外設定を構成する
例外ヘルパーの [例外設定] セクションでは、現在の種類の例外がスローされたときに中断するようにデバッガーを構成できます。 デバッガーがスローされた例外で一時停止している場合、このチェックボックスを使って、将来その例外タイプがスローされた際に中断を無効化できます。 この特定のモジュールでこの特定の例外がスローされたときに中断しないようにする場合は、[例外設定] ウィンドウの [次からスローされた場合を除く:] でモジュール名のチェック ボックスをオンにします。
内部例外を検査する
例外に内部例外 (InnerException) がある場合は、例外ヘルパーでそれらを表示できます。 複数の例外が存在する場合は、呼び出し履歴の上に示されている左右の矢印を使用して、それらの間を移動できます。
例外ヘルパー を持つ
再スローされた例外を調べる
例外が thrown
されている場合、例外ヘルパーには例外が初めてスローされたときからの呼び出し履歴が表示されます。 例外が複数回スローされた場合は、元の例外からの呼び出し履歴のみが表示されます。
非同期例外の検査 (.NET)
.NET 9 以降では、非同期 Task メソッドが .NET Framework コード内で例外をスローすると、Visual Studio デバッガーは自動的に中断します。 これにより、非同期コード (特に ASP.NET) のデバッグが容易になります。例外は非同期境界を越えてスローされることが多いためです。
呼び出し履歴を表示する
Visual Studio 2022 バージョン 17.3 以降では、[呼び出し履歴] ウィンドウ内に例外スタック フレームを表示できます。 非同期例外の場合、これにより、シンボルをすばやく読み込んだり、ソースを見つけたり、例外のサイトに直接移動したりする機能が追加されます。 [呼び出し履歴ウィンドウ内のスタックフレームは、自動ナビゲーション、フレーム間の迅速な切り替え、シンボルの読み込み、逆コンパイル オプションなどの標準的な呼び出し履歴の機能を提供し、例外がスローされたソースコードに戻ることができます。
を使用した例外ヘルパー
AI のサポートを受ける
Copilotをお持ちの場合、例外のデバッグ中に AI の支援を受けることができます。 [Copilot に質問する] ボタンの ボタン。 これらのシナリオでは、Copilot は質問のコンテキストを既に認識しているため、チャットで自分でコンテキストを提供する必要はありません。 詳細については、「Copilotを使用したデバッグ」を参照してください。
Live Share でデバッグ セッションを共有する
例外ヘルパーから [Live Share セッションを開始] リンクを使って Live Share セッションを開始できます。Live Share セッションに参加しているすべてのユーザーは、他のすべてのデバッグ情報と共に例外ヘルパーを見ることができます。