是Python异常(除了SyntaxError)运行时错误吗?

xnx*_*xnx 8 python runtime-error exception

如果我理解正确,当我运行Python程序时,Python解释器会生成字节码(.pyc.py源一起出现的文件),除非源包含语法错误.

字节码编译器是否生成任何其他异常,或者.pyc是在执行代码时在运行时引发的所有其他异常?

iCo*_*dez 5

好吧,从技术上讲,可以在运行时通过引发任何异常类型raise <exception>。但是我假设您了解这一点,并询问在Python解释您的代码时(执行之前)可能引发什么异常。实际上有很多:

  • SyntaxError:解析器在读取代码时引发此错误。它是由无效语法引起的,例如不平衡的括号,在错误的位置使用关键字等。

  • IndentationError:这是的子类,SyntaxError只要您的代码缩进不当,就会引发此子类。一个例子是:

    if condition:
        line_indented_4_spaces
       line_indented_3_spaces
    
    Run Code Online (Sandbox Code Playgroud)
  • TabError:这是的子类,IndentationError当您在源文件中不一致地混合使用制表符和空格时会引发此错误。

  • SystemError:当内部操作失败时,由解释器引发。遇到一个通常意味着您的Python安装混乱,可能需要重新安装。

  • MemoryError:这类似于SystemError内部操作因内存不足而失败时引发的错误。

所有这些异常都可以在代码甚至开始执行之前引发。前三个是由源文件损坏引起的,可以通过简单地修复语法或缩进来解决。然而,后两者是由解释器自身提出的,用于内部操作失败。这意味着它们很少见,但也更严重,而且不太容易修复。