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 
+0

你不能抓到语法错误 – 2015-02-07 18:12:02

+2

@BhargavRao:是的,你可以。只是*不在文件中的错误*。 – 2015-02-07 18:17:27

你抓不到模块本身的语法错误,因为它抛出代码运行之前。由于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然后可以被抓住。