0

最近、職場で C# (.NET 4.0) プロジェクトを継承しました。このプロジェクトは 40 万行以上のコードであり、例外をキャッチする非常に大きなtry/catch ブロックを多数使用しています。時折、アプリケーションが IndexOutOfRangeException をスローすることがあります。私の上司は、例外をスローした配列の名前を明らかにする簡単な方法を見つけるように私に依頼しました。(このような大きな try/catch ブロックには多くの配列を含めることができます。) FirstChanceException イベントを使用して、IndexOutOfRangeException がスローされたときにコードを実行するようにトリガーできることを知っています。例えば:

class ExceptionTest
{
    public static void Main()
    {
        AppDomain.CurrentDomain.FirstChanceException
+= new EventHandler<FirstChanceExceptionEventArgs>(CurrentDomain_FirstChanceException);
        int[] arr = new int[0];
        arr[0] = 0;
        Console.Read();
    }

    static void CurrentDomain_FirstChanceException(object sender, 
FirstChanceExceptionEventArgs e)
    {
        if (e.Exception.GetType() == typeof(IndexOutOfRangeException))
        {
            Console.WriteLine(e.Exception.StackTrace);
        }
    }
}

残念ながら、この方法では問題のある配列の名前を見つけることはできないようですが、40 万行以上のコードをくまなく調べることはできません。

私は個人的にこのタスクのポイントを理解していませんが、助けていただければ幸いです。これは可能ですか?

編集: 5. 2014 年 8 月

明確にする必要があります。VS でデバッグするときに、問題のある配列を見つけるのは非常に簡単です。このタスクのポイントは、クライアントがプログラムのリリースビルドを使用しているときに例外をスローする配列を検出することです。プログラムは一連のログ ファイルを使用しますが、これらのファイルはスローされた例外の種類のみを示し、アレイ名や行番号は示しません。

4

2 に答える 2