SyntaxError在Python 3中没有例外

时间:2014-02-09 18:20:25

标签: python python-2.7 python-3.x syntax-error

我正在尝试在我的程序顶部编写一个代码块,如果程序在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

这在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

我错过了什么?

2 个答案:

答案 0 :(得分:7)

SyntaxError被抛出编译时。你不能像运行时异常那样捕获它们。

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

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

答案 1 :(得分:1)

以下是关于如何做你想做的事的一个小例子:

import sys

if sys.version_info.major == 2:
    print("Error: This program should only be run in Python 3.")
    raw_input('>')
    exit(0)

此代码将在python2和python3中运行。在这种情况下,您不需要使用try catch。因为在python2中,()没有效果,因为它们不是元组。你可以编写那种东西,它可以在没有SyntaxError的python2和python3中工作。