python - 为什么无法在 python 中捕获 SyntaxError?

标签 python syntax-error

<分区>

如果我有这样一段代码:

try:
    if 45 = 45 : print 45
except SyntaxError:
    print "stuff"

当我运行它时,我仍然得到一个SyntaxError。但是,如果我这样做:

try:
    raise SyntaxError
except SyntaxError:
    print "stuff"

然后它按预期工作(即打印“东西”)。是否有可能捕获 SyntaxError

最佳答案

Python 不是 100% 解释的。您的脚本在执行之前被编译为字节码。在此过程中会检测到语法错误。如果您的脚本正在运行,那么它已经被编译并且没有发现语法错误。所以你不能在执行模块中捕获语法错误。如果存在语法错误,模块将不会执行!

可以在您正在导入的模块中捕获语法错误,或者在您使用exec 执行的代码中捕获语法错误execfile 或使用compile 编译。这些语句周围通常的 try/except 就可以达到目的。

关于python - 为什么无法在 python 中捕获 SyntaxError?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34214924/

相关文章:

excel - 在Excel 2017中嵌套6个IF语句并获得#NAME?错误

python - 无效的语法?

python - Django 网页上的两个 View

python - 使用 numpy 从均匀分布中绘制具有 [0, 1] 的 float

python - 用python对象中的数字替换字母

Python BeautifulSoup 使用 re.compile 查找字符串结尾

python - 'int' 对象无法使用 int 调用(raw_input (""))

mysql - MySQL中的语法错误,但是在创建ROLE时语法正确

python - Python中赋值错误之前引用的局部变量

mysql - 如何选择时间戳日期 > 或 < 其他时间戳的所有记录?