次の方法で共有


例外ヘルパーを使用して例外を調べる

例外の処理は、テクノロジや専門知識のレベルに関係なく、一般的な問題です。 例外がコードでの問題の原因になっている理由を究明していると、フラストレーションを感じることがあります。 Visual Studio で例外をデバッグしているときは、問題のすばやいデバッグに役立つ関連する例外情報が提供されるので、そのフラストレーションが軽減されます。

例外ヘルパー

例外で一時停止する

デバッガーが例外で中断した場合、そのコード行の右側に例外エラー アイコンが表示されます。 例外アイコンの近くに、非モーダルの例外ヘルパーが表示されます。

コード行の隣の例外ヘルパー

例外の情報を調べる

例外ヘルパーで簡単に、例外の種類と例外メッセージ、および例外がスローされたか、またはハンドルされなかったかどうかを、読むことができます。 [詳細の表示] リンクをクリックすることで、例外オブジェクトのプロパティを調べたり表示したりできます。

null 参照を分析する

Visual Studio 2017 以降 (.NET と C/C++ コードの両方)、NullReferenceException または AccessViolation にヒットすると、例外ヘルパーに null の分析情報が表示されます。 分析は、例外メッセージの下にテキストとして表示されます。 次の図の情報では、"s が null であった" ことが示されています。

例外ヘルパーの null 分析

注意

マネージド コードでの null 参照の分析には、.NET バージョン 4.6.2 が必要です。 現在、null 分析はユニバーサル Windows プラットフォーム (UWP) アプリケーションおよび他の .NET Core アプリケーションではサポートされていません。 Just-In-Time (JIT) コード最適化が行われていないコードをデバッグする場合にのみ使用できます。

例外設定を構成する

例外ヘルパーの [例外設定] セクションでは、現在の種類の例外がスローされたときに中断するようにデバッガーを構成できます。 スローされた例外でデバッガーが一時停止した場合、チェック ボックスを使用して、その例外の種類が将来スローされたときの中断を無効にすることができます。 この特定のモジュールでこの特定の例外がスローされたときに中断しないようにする場合は、 [例外設定] ウィンドウの [次からスローされた場合を除く:] でモジュール名のチェック ボックスをオンにします。

内部例外を調べる

例外に内部例外 (InnerException) が含まれる場合は、例外ヘルパーでそれらを表示できます。 複数の例外が存在する場合は、呼び出し履歴の上に表示される左右の矢印を使用して、それらの間を移動できます。

例外ヘルパーと内部例外

再スローされた例外を調べる

例外が thrown されている場合、例外ヘルパーには例外が初めてスローされたときからの呼び出し履歴が表示されます。 例外が複数回スローされた場合は、元の例外の呼び出し履歴だけが表示されます。

例外ヘルパーと再スローされた例外

非同期例外の検査 (.NET)

.NET 9 以降、Visual Studio デバッガーは、非同期 Task メソッドが .NET フレームワーク コード内で例外をスローすると、自動的に中断します。 これにより、非同期コードのデバッグが容易になります。特に ASP.NET では、例外が非同期境界を越えてスローされることが多いため、この機能が便利です。

非同期メソッドを使用した例外ヘルパーを示すスクリーンショット。

呼び出し履歴の表示

Visual Studio 2022 バージョン 17.3 以降では、[呼び出し履歴] ウィンドウ内で例外スタック フレームを見ることができます。 非同期例外の場合、これにより、シンボルをすばやく読み込んだり、ソースを見つけて例外のサイトに直接移動したりする機能が追加されます。 [呼び出し履歴] ウィンドウ内の例外スタック フレームでは、自動ナビゲーション、フレーム間のすばやい切り替え、シンボルの読み込み、例外がスローされたソース コードに戻るための逆コンパイル オプションなど、標準的な呼び出し履歴機能が提供されます。

呼び出し履歴を含む例外ヘルパー

AI による支援を得る

Copilot をご利用の場合は、例外をデバッグする際に AI による支援を受けられます。 [Copilot に質問する] [Copilot に質問する] ボタンのスクリーンショット。 ボタンを探してください。 これらのシナリオでは、Copilot は質問のコンテキストを既に認識しているため、ご自分でコンテキストをチャットで提供する必要はありません。 詳細については、「Copilot を使用したデバッグ」を参照してください。

デバッグ セッションを Live Share と共有する

[Live Share セッションを開始] リンクを使用して、例外ヘルパーから Live Share セッションを開始できます。Live Share セッションに参加しているすべてのユーザーは、他のすべてのデバッグ情報と共に例外ヘルパーを見ることができます。