当Python解释器报告一个错误/异常(从现在开始,我只想说“error”来指代这两个错误)时,它会打印导致错误的行号和内容。你知道吗
有趣的是,如果有一个长时间运行的Python脚本导致错误,并且在脚本运行时更改了.py
文件,那么解释器可以根据.py
文件的更改内容报告错误行。你知道吗
样本.py
from time import sleep
for i in range(10):
print(i)
sleep(1)
raise Exception("foo", "bar")
此脚本运行10秒,然后引发异常。你知道吗
样本2.py
from time import sleep
for i in range(10):
print(i)
sleep(1)
"""
This
is
just
some
filler
to
demonstrate
the
behavior
"""
raise Exception("foo", "bar")
此文件与sample.py
相同,只是它在循环末尾和引发以下异常的行之间有一些垃圾:
Traceback (most recent call last):
File "sample.py", line 7, in <module>
Exception: ('foo', 'bar')
python3 sample.py
mv sample.py sample.py.bak && cp sample2.py sample.py
在sample.py
完成执行之前口译员报告如下:
Traceback (most recent call last):
File "sample.py", line 7, in <module>
Exception: ('foo', 'bar')
在这里,解释器报告在sample.py
的第7行有一个异常,并打印该异常。你知道吗
口译员报告如下:
Traceback (most recent call last):
File "sample.py", line 7, in <module>
"""
Exception: ('foo', 'bar')
在这里,解释器在报告异常时也会报告"""
。
它似乎是在磁盘上的文件中寻找这个信息,而不是将文件加载到内存中运行程序。你知道吗
下面是我运行python3 sample.py
时的心理模型:
sample.py
的内容加载到内存中显然,我的思维模式有缺陷。你知道吗
根据@b\u c链接的the answer
相关问题 更多 >
编程相关推荐