<分区>
如果我有这样一段代码:
try:
if 45 = 45 : print 45
except SyntaxError:
print "stuff"
当我运行它时,我仍然得到一个SyntaxError
。但是,如果我这样做:
try:
raise SyntaxError
except SyntaxError:
print "stuff"
然后它按预期工作(即打印“东西”)。是否有可能捕获 SyntaxError
?
<分区>
如果我有这样一段代码:
try:
if 45 = 45 : print 45
except SyntaxError:
print "stuff"
当我运行它时,我仍然得到一个SyntaxError
。但是,如果我这样做:
try:
raise SyntaxError
except SyntaxError:
print "stuff"
然后它按预期工作(即打印“东西”)。是否有可能捕获 SyntaxError
?
最佳答案
Python 不是 100% 解释的。您的脚本在执行之前被编译为字节码。在此过程中会检测到语法错误。如果您的脚本正在运行,那么它已经被编译并且没有发现语法错误。所以你不能在执行模块中捕获语法错误。如果存在语法错误,模块将不会执行!
您可以在您正在导入
的模块中捕获语法错误,或者在您使用exec
或 执行的代码中捕获语法错误execfile
或使用compile
编译。这些语句周围通常的 try
/except
就可以达到目的。
关于python - 为什么无法在 python 中捕获 SyntaxError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214924/