3

是否存在不生成回溯的运行时错误(= 异常)?如果是,为什么某些运行时错误不会生成回溯?你能举一些例子吗?

4

3 回答 3

4

您可以将一个非常大的值传递给sys.setrecursionlimit(),然后进入无限递归循环。在这种情况下,解释器将崩溃而没有回溯。

然而,这仅仅是因为调用setrecursionlimit()有效地禁用了故障安全机制,该机制会将潜在的堆栈溢出变成 Python 异常。

于 2012-06-19T10:38:00.287 回答
4

是的,我至少能想到一个:分段错误。

>>> import faulthandler
>>> faulthandler._sigsegv()
Segmentation fault

faulthandler 模块专门设计用于在这种情况下提供帮助。

>>> import faulthandler
>>> faulthandler.enable()
>>> faulthandler._sigsegv()
Fatal Python error: Segmentation fault

Current thread 0xb76fe6c0
 File "<stdin>", line 1 in <module>
Segmentation fault
于 2012-06-19T10:41:06.947 回答
1

没有不产生回溯的 Python 异常。正如其他答案所示,您可以使 CPython 崩溃,这不会产生回溯。如果您能解释您对此的兴趣,我们可能会提供更多信息。

于 2012-06-19T11:58:30.847 回答