如果我有这样的代码块:
try:
if 45 = 45 : print 45
except SyntaxError:
print "stuff"
当我运行它时,我仍然得到SyntaxError
。但是,如果我这样做:
try:
raise SyntaxError
except SyntaxError:
print "stuff"
然后它按预期工作(即,它打印“东西”)。是否可以捕获SyntaxError
?
答案 0 :(得分:4)
Python不是100%解释的。您的脚本在执行之前会被编译为字节码。在此过程中检测到语法错误。如果您的脚本正在运行,它已经被编译,并且没有找到语法错误。因此,您无法在执行模块中捕获语法错误。如果存在语法错误,模块将不会执行!
您可以捕获您import
模块中的语法错误,或者您使用exec
或execfile
执行的代码或使用{编译{1}}。围绕这些陈述的通常compile
/ try
将起到作用。