无法捕获语法错误python [重复]
问题内容:
这个问题已经在这里有了答案 :
Python中的SyntaxError不一致? (2个答案)
3年前关闭。
try:
x===x
except SyntaxError:
print "You cannot do that"
输出
x===x
^
SyntaxError: invalid syntax
这也没有抓住
try:
x===x
except:
print "You cannot do that"
其他错误,例如NameError,ValueError,都是可捕获的。
有什么想法吗?
系统规格:
import sys
print(sys.version)
-> 2.7.5(默认值,2014年3月9日,22:15:05)[GCC 4.2.1兼容的Apple LLVM 5.0(clang-500.0.68)]
问题答案:
你也只能望尘莫及SyntaxError
,如果它抛出的出来eval
,exec
或import
操作。
>>> try:
... eval('x === x')
... except SyntaxError:
... print "You cannot do that"
...
You cannot do that
这是因为,通常,解释器会在执行任何 文件 之前先解析 整个文件 ,因此它会在try
执行语句之前检测到语法错误。但是,如果 在程序执行期间
使用eval
或它的朋友使更多代码被解析,则可以捕获它。 __
我敢肯定这在官方手册中的某个地方,但我现在找不到。