为什么不能在python中捕获SyntaxError?

时间:2015-12-11 01:51:20

标签: python syntax-error

如果我有这样的代码块:

try:
    if 45 = 45 : print 45
except SyntaxError:
    print "stuff"

当我运行它时,我仍然得到SyntaxError。但是,如果我这样做:

try:
    raise SyntaxError
except SyntaxError:
    print "stuff"

然后它按预期工作(即,它打印“东西”)。是否可以捕获SyntaxError

1 个答案:

答案 0 :(得分:4)

Python不是100%解释的。您的脚本在执行之前会被编译为字节码。在此过程中检测到语法错误。如果您的脚本正在运行,它已经被编译,并且没有找到语法错​​误。因此,您无法在执行模块中捕获语法错误。如果存在语法错误,模块将不会执行!

可以捕获您import模块中的语法错误,或者您使用execexecfile执行的代码或使用{编译{1}}。围绕这些陈述的通常compile / try将起到作用。