没有参数的raise语句的文档说
如果不存在表达式,则raise会重新引发当前作用域中处于活动状态的最后一个异常.
我曾经认为这意味着当前的函数必须执行一个except子句.在阅读了这个问题并进行了一些实验后,我认为这意味着堆栈上的任何函数都必须执行一个except子句,但我不确定.另外,我已经意识到我不知道堆栈跟踪如何与no-arg raise一起工作:
def f():
try:
raise Exception
except:
g()
def g():
raise
f()
Run Code Online (Sandbox Code Playgroud)
产生
Traceback (most recent call last):
File "foo", line 10, in <module>
f()
File "foo", line 5, in f
g()
File "foo", line 3, in f
raise Exception
Exception
Run Code Online (Sandbox Code Playgroud)
这看起来不像初始加注时的堆栈,或者重新加注时的堆栈,或者两个堆栈的串联,或者我能理解的任何东西.
我是否正确寻找执行except子句的堆栈上的任何函数?此外,堆栈跟踪如何在重新加载时起作用?