8

空の catch ブロックが大量に発生する本番アプリケーションをデバッグしています:

try {*SOME CODE*}
catch{}

デバッガーが IDE でキャッチにヒットしたときの例外を確認する方法はありますか?

4

7 に答える 7

11

VS では、catch ブロック内で IDE の Locals 領域を見ると、キャッチされた例外のすべての情報を含む $EXCEPTION の効果が得られます。

于 2008-09-02T15:41:12.907 に答える
3

Visual Studio - デバッグ -> 例外 -> スローされた列の「共通言語ランタイム例外」のチェックボックスをオンにします。

于 2008-09-02T15:40:32.860 に答える
1

あなたは書ける

catch (Exception ex) { }

次に、ここで例外がスローされてキャッチされると、ex を調べることができます。

于 2008-09-02T15:41:22.123 に答える
1

いいえ、それは不可能です。そのコード ブロックは「例外は気にしない」と言っているからです。次のコードでグローバルな検索と置換を実行して、例外を確認できます。

catch {}

以下で

catch (Exception exc) {
#IF DEBUG
    object o = exc;
#ENDIF
}

これが行うことは、本番コードの現在の何もしないキャッチを維持することですが、DEBUG で実行すると、オブジェクト o にブレークポイントを設定できるようになります。

于 2008-09-02T15:41:39.503 に答える
1

Visual Studio を使用している場合は、未処理かどうかに関係なく、例外がスローされるたびに中断するオプションがあります。例外がスローされると、例外ヘルパー (おそらく VS 2005 以降のみ) が、その例外の種類を通知します。

+ Ctrl+をAlt押しEて、例外オプション ダイアログを表示し、これをオンにします。

于 2008-09-02T15:44:34.147 に答える
0

@セクトリアン

何も使用していない場合、コンパイラは Exception ex 値を無視するため、これは機能しません。

于 2008-09-02T15:44:40.870 に答える
0

その時点で例外を追加して検査することはできませんか?

于 2008-09-02T15:40:06.997 に答える