异常传播的函数调用链到底有多远?

时间:2011-06-29 17:44:46

标签: python exception

例如,说func1调用func2,调用func3,调用func4,这会引发异常。

如果我在调用func1时进行了try / except,它是否会捕获func4引发的异常?

func1 --> func2 --> func3 --> func4 Raises exception

2 个答案:

答案 0 :(得分:7)

异常传播直到它们到达处理程序,或者直到它们到达程序或线程的入口点。如果后者发生,您的程序将终止。所以,是的,异常将被捕获在func1中,除非其他一个函数首先捕获它。

答案 1 :(得分:3)

异常在调用堆栈中传播,直到匹配的except块处理它。如果except块包含raise指令,它可能会继续向上移动。