Python语法错误未被捕获
问题描述:
from __future__ import print_function
try:
print "a"
except SyntaxError:
print('error')
为什么SyntaxError
异常未被捕获?我使用Python 2.7Python语法错误未被捕获
输出:
File "test", line 4
print "a"
^
SyntaxError: invalid syntax
答
你抓不到模块本身的语法错误,因为它抛出代码运行之前。由于Python逐行编译,因此Python不运行代码,这是在此失败的整个文件。
你可以这样做:
syntaxerror.py
from __future__ import print_function
print "a"
catching.py
:
from __future__ import print_function
try:
import syntaxerror
except SyntaxError:
print('Error')
因为catching
脚本可以在编译后运行,但试图导入syntaxerror
然后触发一个新的编译任务在syntaxerror.py
,引起SyntaxError
例外h然后可以被抓住。
你不能抓到语法错误 – 2015-02-07 18:12:02
@BhargavRao:是的,你可以。只是*不在文件中的错误*。 – 2015-02-07 18:17:27