web-dev-qa-db-ja.com

例外がスローされた後もループの繰り返しを続行

私がこのようなコードを持っているとしましょう:

try
{
    for (int i = 0; i < 10; i++)
    {
        if (i == 2 || i == 4)
        {
            throw new Exception("Test " + i);
        }
    }
}
catch (Exception ex)
{
    errorLog.AppendLine(ex.Message);
}

これで、実行がi==2で停止することは明らかですが、errorLogに2つのエントリ(i==2i==4)それで、例外がスローされても繰り返しを続けることは可能ですか?

13
Dimitar Tsonev

catchのスコープをループの外側ではなく、ループの内側に変更するだけです。

for (int i = 0; i < 10; i++)
{
    try
    {
        if (i == 2 || i == 4)
        {
            throw new Exception("Test " + i);
        }
    }
    catch (Exception ex)
    {
        errorLog.AppendLine(ex.Message);
    }
}
49
Servy

なぜ例外をスローするのですか?すぐにログに書き込むことができます:

for (int i = 0; i < 10; i++)
{
    if (i == 2 || i == 4)
    {
        errorLog.AppendLine(ex.Message);
        continue;
    }
}
7
Kenneth