python - 捕捉语法错误

标签 python error-handling

这个问题在这里已经有了答案:





Failed to catch syntax error python [duplicate]

(2 个回答)


3年前关闭。




我正在编写一个脚本,其中包括在没有换行符的情况下打印 10 秒倒计时,并且我希望它与 Python2 和 Python3 兼容。

这是我尝试过的:

for sec in range(10, 0, -1):
    try:
        print(" %d \r" % sec, end="")
    except SyntaxError:
        subprocess.call("printf \" %d \\r\"" % sec, shell=True)

    time.sleep(1)

我收到了这个错误:
    print(" %d \r" % sec, end="")
                             ^
SyntaxError: invalid syntax

在我看来 SyntaxError应该被抓到。

我已尝试研究该主题,并阅读了 documentation on SyntaxError ,但找不到任何暗示为什么会发生这种情况的东西。

最佳答案

正如文档所说:

This may occur in an import statement, in an exec statement, in a call to the built-in function eval() or input(), or when reading the initial script or standard input (also interactively).



在读取程序时,在执行任何代码之前解析整个文件的语法。如果语法无效,Python 甚至无法开始运行代码。因此,您无法捕获模块内部发生的 SyntaxError。

对于这种特殊情况,有一个替代方案,即 from __future__ import print_function .

关于python - 捕捉语法错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25562107/

相关文章:

数组操作的 Python 属性

python - 在 Python 中,如何将属性同时用作属性和方法/可调用对象?

c# - 如何在 C# 中使用 Linq 将函数应用于列表中的每个元素,就像 python 中的方法 reduce() 一样?

Python:列出目录和大小

powershell - 如果抛出错误,我如何继续处理项目?

python - 无法通过子处理捕获 os 错误

python - 如何在python中根据月、年、时间列标题编写csv文件名

c# - 捕获HttpRequestValidationException MVC

error-handling - 未处理的拒绝错误 : Failed to GET url: https://google. com/alerts

node.js - 提交表单时捕获Sails中的所有错误