Continuer la boucle d'itération après une exception est levée
Disons que j'ai un code comme ceci:
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);
}
Maintenant, il est évident que l'exécution s'arrête sur i==2
, mais je veux faire la finition de l'ensemble de l'itération de sorte que, dans la errorLog
a deux entrées (pour i==2
et i==4
)
Alors, est-il possible de continuer à l'itération même de l'exception est levée ?
- mettre le
try...catch
dans la boucle et l'utilisationcontinue
. - Être exceptionnellement prudent de simplement avaler l'exception et continue. Pour commencer, seul hic, l'exception que vous savez que vous pouvez le récupérer à partir.
- Veuillez consulter cette réponse pour comprendre pourquoi j'ai édité ton titre.
- C'est un très mauvais exemple que vous avez fournies pour être honnête... Quel est le scénario qui êtes-vous essayer de résoudre cela?
- C'est un exemple fantastique. C'est une courte mais complète du programme est capable de reproduire le comportement problématique décrite. Il est largement supérieure à certains gros bloc de code pour laquelle 95% de celui-ci est sans rapport avec la question. Je suis tout à fait reconnaissant que les OP ont pris le temps de créer un court exemple de travail.
Vous devez vous connecter pour publier un commentaire.
Il suffit de changer le champ d'application de la
catch
à l'intérieur de la boucle, et non en dehors d'elle:Pourquoi avez-vous jeter l'exception à tous?
Vous pouvez simplement écrire dans le journal immédiatement:
SomePossiblyExceptionalCode();
si ça aide.errorLog.AppendLine("Test 2\nTest4");
mais comme je sais que ce n'est pas sa réel code ça ne m'étonnerait pas que, dans une réponse.