Comment écrire plusieurs try dans un bloc en python?
Je veux faire:
try:
do()
except:
do2()
except:
do3()
except:
do4()
Si do() échoue, exécutez do2(), si do2() échoue aussi, exceute do3() et ainsi de suite.
en ce qui Concerne meilleur
J'ai le sentiment que la description de votre cas d'utilisation spécifiques conduira à une réponse avec une solution plus élégante...
OriginalL'auteur alwbtc | 2012-12-14
Vous devez vous connecter pour publier un commentaire.
Je ferais un rapide fonction wrapper
first()
pour cela.utilisation:
value = first([f1, f2, f3, ..., fn], default='All failed')
OriginalL'auteur Triptych
Si vous avez vraiment ne se soucient pas des exceptions, vous pouvez en boucle sur les cas jusqu'à ce que vous réussir:
Ce qui évite d'avoir à mettre en retrait une fois pour chaque cas. Si les différentes fonctions des besoins différents arguments que vous pouvez utiliser functools.partielle de 'premier' avant la boucle.
pass
devrait êtrecontinue
peut-être? Des œuvres comme l'écrit maiscontinue
est sémantiquement plus clair.Vrai, qui ne signaler leur intention de mieux. Édité réponse.
OriginalL'auteur Fredrik Håård
Il semble vraiment comme un chose étrange envie de le faire, mais je serais probablement en boucle sur les fonctions et les sortir quand il n'y avait pas d'exception soulevée:
Le
else
exécute uniquement lorsqu'il n'y a pas une exception. Si il y a une exception pour la continuera alors que si il n'y avait pas une exception à labreak
à exécuter. 🙂 Beaucoup de déclarations en Python prend unelse
avec l'intention de "si tout s'est bien passé, puis le faire". Consultez la documentation dutry
déclaration: docs.python.org/3/reference/compound_stmts.html#tryOriginalL'auteur gaqzi
Vous devez spécifier le type de l'exception que vous essayez d'attraper à chaque fois.
et ainsi de suite.
Si vous ne connaissez pas le type de l'exception, vous ne savez pas comment traiter l'exception.
Je suis vraiment sûr que vous devez savoir quel type(s) d'exception(s) prévoyez-vous.
Je ne suis pas d'accord avec vous. Je sais que mon intervention va échouer, mais je ne sais pas dans quel ordre ils vont échouer. Mais je sais quoi faire en cas de panne.
C'est juste une mauvaise pratique de "Faire quelque chose si quelque chose échoue", vous n'avez pas maintenant pourquoi il échoue.
OriginalL'auteur alexvassel
Ici est la façon la plus simple que j'ai trouvé, juste intégrer l'essayer sous la précédente sauf.
OriginalL'auteur sparrow
OriginalL'auteur Raghu nathan