Je suis nouveau à python et j'ai eu aucune difficulté avec un exemple d'apprentissage essayer et à l'exception des blocs:python - capture chaîne inachevée Erreur de syntaxe à l'aide essayer sauf
try:
2 + "s"
except TypeError:
print "There was a type error!"
qui produit ce que l'on pouvait s'y attendre:
There was a type error!
Cependant, en essayant d'attraper une erreur de syntaxe comme ceci:
try:
print 'Hello
except SyntaxError:
print "There was a syntax error!"
finally:
print "Finally, this was printed"
J'ir obtenir l'erreur de syntaxe EOL. J'essayais cela quelques fois dans l'environnement de cahier jupyter et seulement quand je suis passé à un terminal dans VIM il me semblait logique que le compilateur interprétait les blocs de code except et finalement comme le reste de la chaîne incomplète.
Ma question est de savoir comment aborder la gestion des erreurs de syntaxe dans ce format? Ou y a-t-il une manière plus efficace (pythonique?) De s'y prendre?
Ce n'est peut-être pas quelque chose que l'on trouve vraiment mais il serait intéressant de savoir s'il y avait une solution de contournement propre.
Merci!
manquant une citation de fermeture après la ligne : imprimer 'Bonjour –
Vous ne pouvez pas; De telles erreurs de syntaxe sont déclenchées lors de l'analyse, pas lors de l'exécution. L'analyseur ne voit même pas qu'il existe une instruction 'except', car elle fait toujours partie de la chaîne qu'il analyse. Vous obtenez l'erreur EOL car une chaîne entre guillemets non-triple doit être fermée avant la fin de la ligne en cours. – chepner
Les seules 'SyntaxError' capturables sont celles qui proviennent d'une instruction' exec' syntaxiquement valide dont * argument * contient des erreurs de syntaxe. – chepner