C# à l'aide de Continuer à l'intérieur de la capture d'un try catch
Maintenant, je vais avoir un problème majeur avec l'instruction continue. FetchUnseenMessages peut ou ne peut pas retourner une erreur en fonction de si oui ou non il est capable de se connecter à un compte e-Mail spécifié. Je veux que l'instruction continue à remonter vers l'élément suivant de l'instruction foreach (essayer la prochaine compte e-mail) doit FetchUnseenMessages échouer. Je suis l'obtention de certains résultats inattendus. Je ne crois pas que l'instruction continue est d'aller à l'élément suivant dans l'instruction foreach mais depuis le début de l'instruction try et essayer à nouveau. Je suis coincé sur ce toute la journée et je suis coincé. S'il vous plaît aider. Merci, Chris.
foreach (string l in lUserName)
{
try
{
newMessages = FetchUnseenMessages(sUsername);
}
catch
{
continue;
}
//Other code
}
catch (SomeExceptionType) { }
l n'est pas transmis dans votre méthode. Donc, ce qui vous fait penser que la boucle problème est en cours d'exécution,?
"Je ne crois pas que l'instruction continue est d'aller à l'élément suivant dans l'instruction foreach" Comment le savez-vous? Votre code n'utilise même pas
l
.J'ai pris beaucoup de code pour le but de ce problème. FetchUnseenMessages est passé de la variable nom d'utilisateur 4 fois (tous les différents noms d'utilisateur) et maintenant ça en boucle 4 fois, mais seulement le même nom d'utilisateur transmis (4 fois). Donc, je crois que le problème est que l'instruction foreach est en boucle, mais pas de sauter à la prochaine valeur.
OriginalL'auteur DigitalRayne | 2014-02-26
Vous devez vous connecter pour publier un commentaire.
Vous pouvez utiliser un
bool
variable indicateur défini dans le bloc catch et exécuter instruction continue après la capture si l'indicateur indique l'exécution du bloc catch.Modifier Par la donné plus de détails sur le comportement de la poursuivre devrait être normal, non, vous ne devriez pas avoir de problèmes. Vous pourriez avoir un autre problème comme fermeture variable dans une boucle, vous pouvez en savoir plus sur la variable de fermeture ici.
J'ai fait un test pour vérifier le scénario donné et il semble être normal.
La sortie à l'aide de continuer à en attraper
Variable de boucle boîtier
De sortie de la boucle de la boîtier variable
Solution de la variable de boucle boîtier, faire une copie de la variable de boucle et la passer à l'action.
Sortie
Vous devez mentionner que la fermeture de la sémantique de
foreach
boucles (pas d'autres boucles commefor
ouwhile
) a changé à partir de C# 4 C# 5. Donc, si vous faites la capture de la variable déclarée parforeach
à l'intérieur de certaines fonction anonyme (généralement une expression lambda, avec la=>
flèche), le résultat dépend de votre version de C#.OriginalL'auteur Adil