SyntaxError在Python 3中没有例外

fol*_*tor 1 python syntax-error python-2.7 python-3.x

我正在尝试在我的程序顶部编写一个代码块,如果程序意外地在Python 2.x中运行,它将给出一条错误消息并退出,但如果在Python中运行3.x将正常运行:

try:
    print "Error: This program should only be run in Python 3."
    raw_input('>')
    exit()
except SyntaxError:
    pass
print("I see you're running Python 3.")
# rest of program
Run Code Online (Sandbox Code Playgroud)

这在Python 2.7中正常工作(即,它显示错误和退出),但是当我在Python 3.3中运行它时,我得到一个SyntaxError,即使我告诉它有一个例外.

  File "version.py", line 2
    print "This program should only be run in Python 3"
                                                      ^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

roi*_*ppi 7

SyntaxErrors在编译时被抛出.您不能像运行时异常那样捕获它们.

如果你想查看python版本,请查看sys.version_info.

import sys
if sys.version_info.major < 3:
    sys.exit('This program should only be run in Python 3')
Run Code Online (Sandbox Code Playgroud)