当我运行try except语句来捕获IndentationError时,语句不起作用

时间:2017-09-22 07:39:14

标签: python-3.x

当我运行try except语句来捕获IndentationError时,语句不起作用,这是我的代码:

try: 
    for i in range(2):
    print(i)
except IndentationError:
    print('IndentationError')

然后我得到了结果:

try: 
    for i in range(2):
    print(i)
except IndentationError:
    print('IndentationError')
File "<ipython-input-57-5df0f4cccb57>", line 3
print(i)
    ^
IndentationError: expected an indented block```

为什么try语句在这种情况下不起作用?

1 个答案:

答案 0 :(得分:1)

IndentationError和其他SyntaxError异常无法在源文件本身中捕获,因为这是一个解析阶段异常。此时try没有运行,因为在此阶段无法解析代码并将其编译为字节码。

您只能在触发解析的代码中捕获此类异常,例如import语句或显式compile()函数调用。