【问题标题】:Why is it not possible to catch SyntaxError in python? [duplicate]为什么无法在 python 中捕获 SyntaxError? [复制]
【发布时间】:2023-03-13 18:07:01
【问题描述】:

如果我有这样的代码块:

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

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

try:
    raise SyntaxError
except SyntaxError:
    print "stuff"

然后它按预期工作(即,它打印“stuff”)。有没有可能抓到SyntaxError

【问题讨论】:

  • 您实际上在运行代码之前得到了SyntaxError
  • 无法执行包含语法错误的代码。 IE。你的 try...except 语句永远不会运行。
  • 编译器错误与运行时错误
  • 是的,记住没有需要动态捕捉语法错误,因为你在代码运行之前就修复了它们,之后它们就消失了。

标签: python syntax-error


【解决方案1】:

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

可以捕获您正在使用importing 的模块中的语法错误,或使用execexecfile 执行的代码或使用compile 进行编译的代码。这些语句周围的常用try/except 就可以解决问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-26
    • 1970-01-01
    • 2020-06-11
    • 1970-01-01
    • 2019-10-29
    • 2019-04-17
    • 1970-01-01
    相关资源
    最近更新 更多