例如,说func1
调用func2
,调用func3
,调用func4
,这会引发异常。
如果我在调用func1
时进行了try / except,它是否会捕获func4
引发的异常?
func1 --> func2 --> func3 --> func4 Raises exception
答案 0 :(得分:7)
异常传播直到它们到达处理程序,或者直到它们到达程序或线程的入口点。如果后者发生,您的程序将终止。所以,是的,异常将被捕获在func1中,除非其他一个函数首先捕获它。
答案 1 :(得分:3)
异常在调用堆栈中传播,直到匹配的except
块处理它。如果except
块包含raise
指令,它可能会继续向上移动。