Python语法错误没有被捕获

时间:2015-02-07 18:10:24

标签: python python-2.7 exception-handling

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

1 个答案:

答案 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异常然后可以被抓住了。