[英]python - catching unfinished string Syntax Error using try except
我是python的新手,我不难举一个学习try的例子,除了blocks:
try:
2 + "s"
except TypeError:
print "There was a type error!"
哪些输出将是您期望的:
There was a type error!
但是,当尝试捕获这样的语法错误时:
try:
print 'Hello
except SyntaxError:
print "There was a syntax error!"
finally:
print "Finally, this was printed"
具有讽刺意味的是,我会得到EOL语法错误。 我在jupyter笔记本环境中尝试了几次,只有当我移到VIM中的终端时,我才知道编译器将except代码块和最终代码块解释为不完整字符串的其余部分。
我的问题是,如何处理这种格式的语法错误? 还是有一种更有效的方法(pythonic?)来解决这个问题?
可能不是真正遇到过的事情,但是知道是否有一个干净的解决方法会很有趣。
谢谢!
您不能使用try / except块捕获SyntaxErrors的原因是这些错误在代码执行之前发生。
Python代码执行的高级步骤
由于错误发生在步骤1中,因此您不能使用try / except来拦截它们,因为它仅在步骤2中执行。
答案很简单:
SyntaxError
使except
和finally
语句无效,因为它们位于字符串内部。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.