ASP.NET の例外をデバッグする
例外のデバッグは、堅牢な ASP.NET アプリケーションの開発において重要な部分です。 例外をデバッグする方法に関する一般的な情報については、「デバッガーでの例外の管理」を参照してください。
ハンドルされない ASP.NET 例外をデバッグする場合、それらのためにデバッガーが停止していることを確認する必要があります。 ASP.NET ランタイムにはトップレベルの例外ハンドラーがあります。 そのため、デバッガーは既定では、ハンドルされない例外で実行を中断することはありません。 例外がスローされたときにデバッガーに割り込むには、[例外] ダイアログ ボックスで、その特定の例外に対して [スロー時に中断] の設定を選択する必要があります。
[マイコードのみ] を有効にしている場合は、 [例外が次の場合に中断する: スローされたとき] では、.NET メソッドまたは他のシステム コードで例外がスローされた場合に、デバッガーがすぐに中断されることはありません。 デバッガーがシステム コード以外のコードをヒットするまで実行は継続され、ヒットした時点でデバッガーは中断されます。 つまり、例外が発生したときにシステム コードをステップ実行する必要はありません。
[マイ コードのみ] には、便利な別のオプションが用意されていますL ユーザー コードで処理されない場合は続行します。 例外にこの設定を選択すると、ユーザー コードで例外が取得され、処理された場合にのみ、デバッガーによってユーザー コードの実行が中断されます。 この設定により、トップレベルの ASP.NET 例外ハンドラーの効果は打ち消されます。このハンドラーが非ユーザー コード内にあるためです。
[マイ コードのみ] で ASP.NET 例外を有効にするには
それを行うには、[デバッグ] メニューの [ウィンドウ]>[例外設定] を選択します。
[例外] ダイアログ ボックスが表示されます。
[共通言語ランタイム例外] で、スローされたときに中断する例外の行を選択します。
[ユーザー コードで処理されない場合に続行] を無効にする場合は、行を右クリックし、オプションが既に選択されている場合は選択解除します。
[ユーザーにハンドルされていないとき] 設定を使用するには、[マイ コードのみ] を有効にする必要があります。
ASP.NET の例外処理で推奨される手順を使用するには
- 予測でき、処理方法がわかる例外をスローできるコードを、
try ... catch
ブロックで囲みます。 たとえば、アプリケーションから XML Web サービスを呼び出したり、SQL Server を直接呼び出したりする場合、そのコードは、try … catch ブロックで囲みます。この場合、数多くの例外が発生すると予想できるためです。