11

エラー ログに表示されているいくつかのエラーを再現できません。

特定のメソッドが例外をスローしたときにどのレコード ID を使用していたかを知っていれば、はるかに簡単になります。

未処理の例外はすべてグローバル例外ハンドラーによって処理され、例外のすべての詳細と HTTP 要求のすべての詳細がログ テーブルに記録されます。

例外をスローしたメソッドのすべてのパラメーターの値を取得する方法はありますか? またはさらに良いことに、スタック トレースのすべての値は?

4

3 に答える 3

13

残念ながら、これは不可能です。ハンドラーで例外をキャッチした時点で、メソッド パラメーターを含むすべてのスタック フレームが失われています。コントロールが関数を離れると、そのパラメーター値にアクセスできなくなります。

クラッシュが発生した特定の関数がわかっているので、そこに例外ハンドラを設定して、対象のすべてのパラメータを収集し、ラップされた例外を再スローすることができます。診断が完了したら、コードを通常に戻すことができます。

void SuspiciousFunction(string name, long count) {
    try {
        // The code of your function goes here
    } catch (Exception e) {
        var args = new Dictionary<string,object> {
            { "name" , name  }
        ,   { "count", count }
        };
        throw new MySpecialException(e, args);
    }
}
于 2013-05-24T20:45:01.557 に答える
3

スローされたメソッドで例外をキャプチャし、パラメーターとその他の必要な情報を収集してから、追加情報を含む新しい ApplicationException またはその他のカスタム例外でエラーを再スローします。

于 2013-05-24T20:40:53.690 に答える
-1

ドキュメントEnvironment.StackTraceから、可能だと思います。彼らが言うには

各メソッド呼び出しのスタック トレース情報は、次のようにフォーマットされます。

"で FullClassName. MethodName (MethodParams) in FileName :line LineNumber "

于 2013-05-24T20:45:32.320 に答える