ASP.NET の例外をデバッグする

例外のデバッグは、堅牢な ASP.NET アプリケーションの開発において重要な部分です。 例外をデバッグする方法に関する一般的な情報については、「デバッガーでの例外の管理」を参照してください。

ハンドルされない ASP.NET 例外をデバッグする場合、それらのためにデバッガーが停止していることを確認する必要があります。 ASP.NET ランタイムにはトップレベルの例外ハンドラーがあります。 そのため、デバッガーは既定では、ハンドルされない例外で実行を中断することはありません。 例外がスローされたときにデバッガーに割り込むには、[例外] ダイアログ ボックスで、その特定の例外に対して [スロー時に中断] の設定を選択する必要があります。

[マイコードのみ] を有効にしている場合は、 [例外が次の場合に中断する: スローされたとき] では、.NET メソッドまたは他のシステム コードで例外がスローされた場合に、デバッガーがすぐに中断されることはありません。 デバッガーがシステム コード以外のコードをヒットするまで実行は継続され、ヒットした時点でデバッガーは中断されます。 つまり、例外が発生したときにシステム コードをステップ実行する必要はありません。

[マイ コードのみ] には、便利な別のオプションが用意されていますL ユーザー コードで処理されない場合は続行します。 例外にこの設定を選択すると、ユーザー コードで例外が取得され、処理された場合にのみ、デバッガーによってユーザー コードの実行が中断されます。 この設定により、トップレベルの ASP.NET 例外ハンドラーの効果は打ち消されます。このハンドラーが非ユーザー コード内にあるためです。

[マイ コードのみ] で ASP.NET 例外を有効にするには

  1. それを行うには、[デバッグ] メニューの [ウィンドウ]>[例外設定] を選択します。

    [例外] ダイアログ ボックスが表示されます。

  2. [共通言語ランタイム例外] で、スローされたときに中断する例外の行を選択します。

  3. [ユーザー コードで処理されない場合に続行] を無効にする場合は、行を右クリックし、オプションが既に選択されている場合は選択解除します。

    [ユーザーにハンドルされていないとき] 設定を使用するには、[マイ コードのみ] を有効にする必要があります。

ASP.NET の例外処理で推奨される手順を使用するには

  • 予測でき、処理方法がわかる例外をスローできるコードを、try ... catch ブロックで囲みます。 たとえば、アプリケーションから XML Web サービスを呼び出したり、SQL Server を直接呼び出したりする場合、そのコードは、try … catch ブロックで囲みます。この場合、数多くの例外が発生すると予想できるためです。