【问题标题】:Python Syntax Error is not being caught [duplicate]未捕获 Python 语法错误 [重复]
【发布时间】:2015-02-07 18:10:24
【问题描述】:
from __future__ import print_function

try:
    print "a"
except SyntaxError:
    print('error')

为什么SyntaxError 异常没有被捕获?我正在使用 Python 2.7

输出:

  File "test", line 4
    print "a"
            ^
SyntaxError: invalid syntax

【问题讨论】:

  • 你无法捕捉到语法错误
  • @BhargavRao:是的,你可以。只是不在有错误的文件中

标签: python python-2.7 exception-handling


【解决方案1】:

您无法在模块本身中捕获语法错误,因为它是在代码运行之前引发的。 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 异常,然后可以捕获该异常。

【讨论】:

    猜你喜欢
    • 2014-09-22
    • 1970-01-01
    • 2018-02-12
    • 1970-01-01
    • 2015-09-07
    • 2018-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多