from __future__ import print_function
try:
print "a"
except SyntaxError:
print('error')
为什么没有发现SyntaxError
例外?我使用的是Python 2.7
输出:
File "test", line 4
print "a"
^
SyntaxError: invalid syntax
答案 0 :(得分:7)
您无法捕获模块本身的语法错误,因为它在代码运行之前被抛出。 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
异常然后可以被抓住了。