Y a-t-il un moyen dans Python de continuer à itération après une exception jointe par itérateur / générateur? Comme dans le code ci-dessous, il y a un moyen de sauter ZerodiVisionError et de continuer à boucler via gener () code> sans modyfing
exécuté () code> fonction?
def gener():
a = [1,2,3,4,0, 5, 6,7, 8, 0, 9]
for i in a:
yield 2/i
def run():
for i in gener():
print i
#---- run script ----#
try:
run()
except ZeroDivisionError:
print 'what magick should i put here?'
3 Réponses :
L'endroit logique pour le Essayez / sauf code> serait l'endroit où le calcul incriminé a lieu:
Dans ce cas simple probablement oui. Mais que si nous voulons une fonction où l'itération est arrêtée par défaut, nous pouvons continuer avec l'élément suivant attraper une exception? Nous devrions avoir un signal externe que quelque chose ne va pas.
@Sergzach: Nous pourrions faire quelque chose comme donner aucun code> au lieu de
passer code> et attraper ce cas particulier dans l'appelant.
Une solution possible consiste à envelopper le code de problème en essayez ... Sauf bloc:
Je ne suis pas sûr, mais peut-être que cela vous convient mieux si vous voulez toujours comprendre où les erreurs se sont produites:
Merci de trouver ceci. Corrigé dans EDIT @MatthewStrawwbridge